scp ssh自动填入密码

来源:互联网 发布:淘宝推广培训学校 编辑:程序博客网 时间:2024/05/23 11:49

scp和ssh方便好用而且安全,也许是为了更安全所以默认不会提供密码传参。

但如果你像我一样需要在运行脚本中自动填入scp或ssh的密码可以采用下面两种方法

第一种比较简单,直接使用sshpass命令传递密码

sshpass -p "your password" scp ./abc.txt hostname/abc.txt

第二种可以用expect

#!/usr/bin/expectset timeout 30spawn /bin/bashexpect -re "#|$"send "rsync -e 'ssh ' -avzc youname@server_address:/mydata/game_log/ /data/log/\r"expect {<span style="white-space:pre"></span>"password" { send "YOU_PASSWORD\r" }<span style="white-space:pre"></span>"yes/no" { send "yes\r"; exp_continue; }}expect -re "total size is"expect -re "#|$"send "exit\r"


其实可以看出expect是一个更灵活的设计,他其实是脱胎于tcl语言,也就是说你需要安装expect才能使用,这里注意脚本的第一行

#!/usr/bin/expect -f

这里就是告诉shell由expect来执行这个脚本,spawn命令则是与expect交互的shell命令。而在后面你可以通过expect来将交互命令中输出作为输入条件(这里的expect可不是shell里的而是expect中的expect),如果带-re表示采用正则。之后可以用send或exp_send对交互命令输入。总之你可以用这做出非常有意思的功能。


这样就OK了,祝你好运


0 0
原创粉丝点击