有时候需要上传文件到远程服务器,但是有的需要密码登陆,这样就不能在脚本中实现,很麻烦。
在mac系统可以使用expect工具实现,mac系统 安装:brew install expect,如果linux的话用yum或者其他源。
下面贴上我的脚本:
#!/usr/bin/expect
#第一行是安装路径
#需要执行的上传命令
spawn scp fileName user@ip:<目标路径>
#设置请求超时时间
set timeout 20
#expect后面跟的是,服务器返回的内容,比如ssh登陆时候,会返回 "password:",然后你在后面输入密码
#此操作返回的是"user@ip's password:",send后面填上你的密码
expect "user@ip's password:" {send "password\r"}
#interact 返回到命令行窗口
interact
最后将文件命名为 xxx.exp,通过expect xxx.exp来执行脚本,当然执行之前别忘了加上权限,执行 chmod a+x *。
如果你想免密登陆,将脚本中 spawn 后面的换成登陆命令即可,"user@ip's password:"替换成"password:",就可以实现不用手动输入密码登陆。
这样就可以在脚本中实现你想做的事情了。