1
cloverstd 2013-08-01 12:50:43 +08:00 via Android
要用 ssh 的标准输入读取
我之前是用 sudo,sudo 有一个参数是从标准输入读取密码 |
2
timonwong 2013-08-01 13:04:33 +08:00
ssh命令的password输入需要一个terminal, popen是用pty.fork()实现的,挂上一个pseudo terminal获取输入。
|
3
lenciel 2013-08-01 13:48:35 +08:00
由于安全上的考虑,ssh (还有scp, sftp)这些命令是直接和console交互的,你平时敲在terminal的password是console直接给它们而不是它们从STDIN读取。想在pipe里面传password是不行的。你实在是要做有很多办法:
1. 用Popen发命令 echo "password" | ssh user@hostname 2. 用paramiko 3. 用pexpect 1最不安全因为密码在代码里面,2最简单。 |