scp ssh自动填入密码

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

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

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

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

第二种可以用expect

#!/usr/bin/expect

set timeout 30

spawn /bin/bash
expect -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了,祝你好运


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值