删除文章

确定要删除这篇文章吗?

取消
确定

linux expect scp自动输入密码

     阅读(1041)  2020-10-14 09:44:46

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这个脚本

git pull的时候不需要输出密码,假如密码是123456 :
pull.sh:

#!/usr/bin/expect -f

set password "123456"

spawn git pull
expect {
        "Password:" { send "$password\r"; }
}
expect eof
exit

文章评论

liangzi
不错 谢谢分享
Keep it simple,stupid
文章数
348
今日访问
2347
今日IP数
848
最近评论

在家赚钱: 在家赚钱 <a href="http://www.265250.com/" >在家赚钱</a> 已阅,感谢站长分享!
liangzi: 不错 谢谢分享
tujiaw: registerThreadInactive:如果当前没有激活的线程,就去激活线程,让等待的线程去执行任务。
hgzzx: 佩服佩服。 请教:registerThreadInactive的作用是什么?
xuehaoyun: 很不错,来围观一下
tujiaw: 抱歉csdn code服务关闭了,这个代码我也找不到了
回到顶部