expect以及rsync实现远程连接自动推送密码

来源:互联网 发布:小米电视3怎么样 知乎 编辑:程序博客网 时间:2024/06/15 07:31

首先说下用expect实现远程连接自动推送密码:

有的时候,我们ssh登陆远程机器,或者scp从远程机器上拷贝文件,都要手动输入远程机器的 密码,如果我们的脚本要自动指定这些命令,如何实现自动推送密码?

这就要用到except和spawn

这里我用到了两个文件

1. 文件1: upload_to_sohu.exp

#/bin/bash/expect  #特定标识#先预定义一些变量,比如远程机器的用户名,密码,ip,文件路径set user your_usernameset passwd your_passwordset ipaddr 10.134.122.122set filepath /search/wenwen_data/denglinjie/set filename [lindex $argv 0]   #从输入参数中读取要拷贝的文件名spawn /usr/bin/scp $user@$ipaddr:$filepath$filename .  #执行拷贝,其实就是在scp命令的前面加了spawn, 从而进入交互模式set timeout 100   #设置超时expect "*password:"  #定义当服务器返回*password:模式的字符串时send "$passwd\n"     #就发送密码到服务器,注意最后的换行符是必须的expect eof 

2. 文件2:upload_to_sohu.sh

#!/bin/bashexpect upload_to_sohu.exp testfile

接下来执行脚本

#sh  upload_to_sohu.sh

就可以将远程机器上的文件拷贝到本地


再说下用rsync连接远程rsync服务器的时候实现自动输入密码的方法

#!/bin/bashrsync -avz --progress --password-file=passwd testfile soha@123.105.90.33::soha
其中:--password-file指定密码从当前目录的passwd文件中读取


这就本地的testfile文件上传到了远程的rsync服务器上



原创粉丝点击