shell脚本无密码登录 expect使用
2014-03-05 11:24
288 查看
今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了。
从网上查到使用expect可以,简单研究了一下,效果不错。
系统:CentOS 6.3
因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译。
安装好之后就可以使用了,这里有几种方法:
一、单独写一个脚本
如 auto_scp.sh:
"./auto_scp.sh 2.2.2.2"就可以了,"2.2.2.2"就是传入的第一参数。
"passphrase"和"password"等就是要监测的输入提示的一部分,
二、在脚本中使用----我比较喜欢这个
我这里使用的是Here document方法。
三、在脚本中使用
也是在脚本使用,但是不是用的Here document方法,而是使用expect -c 参数书,"-c"选项后面的字符串填充的就是命令。但是要注意本身字符串的转义符。
更多使用方法,请参看"man手册"。
从网上查到使用expect可以,简单研究了一下,效果不错。
系统:CentOS 6.3
因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译。
安装好之后就可以使用了,这里有几种方法:
一、单独写一个脚本
如 auto_scp.sh:
#!/usr/bin/expect #使用第一个参数 set server_ip [lindex $argv 0] #后面的也可以用参数[lindex $argv n] set server_port 22 set server_dir /home/test set server_user test set server_pswd test set scp_file auto_scp.sh # 设置超时时间 set timeout 60 spawn scp -P $server_port $scp_file $server_user@$server_ip:$server_dir expect { "passphrase" { send "$server_pswd\n"; } "password" { send "$server_pswd\n"; } "yes/no" { send "yes\n"; exp_continue; } } expect eof我这里的变量都是随意设置的,你可以根据你的情况进行选择,保存退出之后,对该文件加上可执行权限,运行
"./auto_scp.sh 2.2.2.2"就可以了,"2.2.2.2"就是传入的第一参数。
"passphrase"和"password"等就是要监测的输入提示的一部分,
send "$server_pswd\n"就是要执行的命令。
二、在脚本中使用----我比较喜欢这个
我这里使用的是Here document方法。
...... ...... expect <<!! set timeout 60 spawn scp -P $server_port $scp_file $server_user@$server_ip:$server_dir expect { "passphrase" { send "$server_pswd\n"; } "password" { send "$server_pswd\n"; } "yes/no" { send "yes\n"; exp_continue; } } expect eof !! ......变量都是我从配置文件中获取的,这里不再赘述了。
三、在脚本中使用
也是在脚本使用,但是不是用的Here document方法,而是使用expect -c 参数书,"-c"选项后面的字符串填充的就是命令。但是要注意本身字符串的转义符。
更多使用方法,请参看"man手册"。
相关文章推荐
- shell脚本无密码登录 expect的使用方法详解
- shell脚本通过expect脚本实现自动输入密码(使用expect)
- Linux使用expect实现自动登录的脚本
- 使用shell脚本新增20个用户密码为随机5个字符
- mysql免密码登录, 及使用-e 参数执行sql脚本
- 使用expect实现shell脚本中scp,ssh自动输入口令
- Linux中使用expect脚本实现远程机器自动登录
- Shell脚本实现自动输入密码登录服务器
- shell + expect 自动登录并执行脚本
- ssh、scp的使用,以及shell脚本解决scp需要输入密码的问题
- linux,scp传输文件用expect工具免密码输入shell脚本
- 详解Linux使用shell+expect远程登录主机
- 在shell脚本中用expect 实现 scp 文件的时候不手动输入密码
- Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件
- Linux下实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本分享
- 使用shell脚本自定义实现选择登录ssh
- shell脚本通过expect实现自动单边无密登录
- expect 提供用户名和密码的SSH自动登录脚本