删除文章

确定要删除这篇文章吗?

取消
确定

linux expect scp自动输入密码

     阅读(339)  2019-06-27 17:26:16

Expect是一个根据脚本与其他交互程序进行“对话”的程序,通过脚本,Expect根据程序的输出信息来判断需要什么输入,然后将输入信息发送给程序。详细文档

现在通过一个简单的例子来使用它,使用scp在不同机器间传输文件每次都要输入密码,expect可以去掉输入密码这个步骤。

脚本如下,假如名字是sync.sh,远程主机的密码是123456

#!/usr/bin/expect -f
set timeout -1
set password "123456"

set src [lindex $argv 0]
set dst [lindex $argv 1]

spawn scp $src $dst

expect {
        "yes/no" { send "yes\r"; exp_continue }
        "password:" { send "$password\r"; }
}

expect eof
exit

用法: 执行下面的命令,传输aaa文件到另一台机器的home目录就不用输入密码了

./sync.sh aaa 172.16.77.100:/home

如果你要传输多个不同的文件可以在另外的脚本里面多次调用sync.sh这个脚本

文章评论

Keep it simple,stupid
文章数
306
总访问量
539276
今日访问
1016
最近评论

tujiaw : registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx : 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
回到顶部