linux 脚本 expected,Linux | shell与expect结合使用
在linux操作系统下,使用脚本自动化,一般由两种方案。
方案一:telnet+ftp
方案二:ssh+scp+expect。
以下主要使用ssh+scp+expect为例进行说明使用方式。
第一步:安装expect:yum -y install expect
第二步:验证,执行expect是否正确
第三步:编写脚本ssh_exec(){
ip=$1
user=$2
passwd=$3
cmdstr=$4
/usr/bin/expect <
set time 10
spawn ssh $user@$1
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" {send "$passwd\r"}
}
expect "*#"
expect "*#"
send "$cmdstr\r"
expect "*#"
send "exit\r"
expect eof
EOF
}
function scp_get () {
local ip=$1
local user=$2
local passwd=$3
local src=$4
local dst=$5
[ -z "$ip" -o -z "$passwd" ] && return 1
/usr/bin/expect << EOF
proc remote_exec {ip passwd src dst} {
spawn scp \$user@\$ip:\$src \$dst
exp_internal 0
expect {
"yes/no" { send "yes\\r";exp_continue}
"*password:" {send "\$passwd\\r"}
}
expect eof
}
remote_exec "$ip" "$user" "$passwd" "$src" "$dst"
EOF
}
#从本地服务器复制到远程服务器
function scp_put () {
local ip=$1
local user=$2
local passwd=$3
local localfile=$4
local dst=$5
[ -z "$ip" -o -z "$passwd" ] && return 1
/usr/bin/expect << EOF
proc remote_exec {ip passwd localfile dst} {
spawn scp \$localfile \$user@\$ip:\$dst
exp_internal 0
expect {
"yes/no" { send "yes\\r";exp_continue}
"*password:" {send "\$passwd\\r"}
}
expect eof
}
remote_exec "$ip" "$user" "$passwd" "$localfile" "$dst"
EOF
}
ssh_exec 192.168.1.2 root 111111 'df -h'
scp_get 192.168.1.2 root 111111 '/root/test.txt' '/opt/'
代码说明:
第四步:对脚本授权,执行:chmod -R 755 script.sh
第五步:脚本执行,./script.sh (备注:shell+expect脚本,不能使用sh script.sh执行,只能采用./script.sh执行)
linux 脚本 expected,Linux | shell与expect结合使用相关推荐
- linux脚本编写规则,shell脚本编写守则
现在centos7中使用的是bash软件,通过以下命令可以查看bash版本: [root@localhost ~]# cat /etc/redhat-release #查看系统的版本 CentOS L ...
- linux 脚本的作用,shell export 作用
shell与export命令用户登录到Linux系统后,系统将启动一个用户shell.在这个shell中,可以使用shell命令或声明变量,也可以创建并运行 shell脚本程序.运行shell脚本程序 ...
- linux 脚本 整数 赋值,shell基础!!熟悉编程规范与变量
一.SHELL规范 SHELL简单介绍 Bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell.Bash 的全称为 Bourne Again Shell,是最受欢迎的开源软 ...
- linux脚本基本命令大全,Shell脚本常用命令
Shell脚本常用命令 1 Shell中的特殊符号 1.1 $ 美元符号.用来表示变量的值.如变量NAME的值为Mike,则使用$NAME就可以得到" ...
- linux脚本简介,Linux Shell脚本简介
Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...
- linux脚本文件编辑器,Shell文件编辑器
文件编辑器,允许在文件中插入.编辑和替换文本等操作. 本文主要针对vim编辑器和nano编辑器的使用做简单记录,目前macOS是支持这两种编辑器的. vim编辑器 vi编辑器是Unix系统最初的编辑器 ...
- 怎么编写Linux脚本循环语句,shell脚本及常用循环语句
博文结构 什么是shell 简单编辑shell 循环语句 一.什么是shell及作用 Shell字面理解就是个"壳",是操作系统(内核)与用户之间的桥梁,充当命令解释器的作用,将用 ...
- linux 脚本 获取pid,Shell脚本中获取进程ID的方法
提问: 我想要知道运行中脚本子shell的进程id.我该如何在shell脚本中得到PID. 当我在执行shell脚本时,它会启动一个叫子shell的进程.作为主shell的子进程,子shell将she ...
- linux 脚本 expected,使用expect实现shell中scp自动输入密码
使用expect实现shell中scp自动输入密码 前段时间有一个需求,要实现一个自动备份脚本,因为不需要全部备份,所以没有使用rsync,在这里使用scp.因为scp需要输入用户密码,在网上查了好多 ...
最新文章
- python hmac_Python实现的HMacMD5加密算法示例
- vue中computed(计算属性)和watch在实现父子组件props同步时的实际区分
- 第18次csp认证 201912-1 报数(C++)
- LRU缓存算法缓存设计和实现
- 打印菱形星号组合C程序
- RabbitMQ主题模式(Topic)
- 微信小程序批量获取input的输入值,监听输入框,数据同步
- ABySS非root权限安装
- 三维点云学习(3)3-Gaussian Mixture Model (GMM)
- C语言两个同名头文件,C lang: C语言中两个头文件引入相同的头文件(Header.h)
- [C++]实现10以内整数的简单科学计算器
- php的ci框架手册,CodeIgniter 教程 - php CodeIgniter 框架 - CodeIgniter手册
- U盘写保护,量产工具修复。
- 怎样在计算机上设置纸大小,电脑中打印机设备自定义纸张打印大小的方法
- clonezilla(clonezilla备份系统)
- Dev中的GridControl中根据条件显示背景色
- 【金融项目】尚融宝项目(十一)
- SpringMVC之使用SpringMVC获取参数与返回数据
- JavaWeb程序设计———名片管理系统
- ubuntu18.04安装搜狗拼音
热门文章
- 这份NLP研究进展汇总请收好,GitHub连续3天最火的都是它
- 飞行模式的开启和关闭
- C++中父类的虚函数必需要实现吗?
- 《CCIE路由和交换认证考试指南(第5版) (第1卷)》——1.6节虚拟交换系统
- 哲学到编程:思想的实例化
- 用模版实现简单的内存池
- lhgdialogV2.37 使用
- leetcode 57. 插入区间
- spray.json_如何使用Spray-json(Un)在Akka HTTP中封送JSON
- init(coder:)_2018年《 New Coder》调查:31,000人告诉我们他们如何学习编码并在工作中获得工作…