2017-09-27 86 views
0

我试图追加公钥到远程服务器上的授权密钥文件与pexpect但它不工作。看起来,输出到文件的重定向不会发生,尽管没有错误。这里是我的代码:如何追加到远程服务器上的文件与pexpect

print "DEGUG: === append to authorized keys START ===" 
print "DEBUG: sending echo <local public key> >> /root/.ssh/authorized_keys" 
print "  local public key: " + local_public_key 
child.sendline('echo ' + local_public_key + ' >> /root/.ssh/authorized_keys') 
child.expect(prompt) 
child.expect(prompt) 
child.sendline('echo $?') 
child.expect(prompt) 
ec = child.before.strip() 
print("exit code: >>>>" + str(ec) + "<<<<") 
print "DEGUG: === append to authorized keys END ===" 

这里是输出:

DEGUG: === append to authorized keys START === 
DEBUG: sending echo <local public key> >> /root/.ssh/authorized_keys 
    local public key: ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAy408yT80SP2x9rZkR56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 

echo ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAy408yT80SP2x9rZkR56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 
>> /root/.ssh/authorized_keys 
R56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 
ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAy408yT80SP2x9rZkR56j4wsbpqUSYOW1uY8Lf4XfJLinbtcpwyyYGJCuNbA30ve1+Lt/AJ2d1VdSAS4Afu1LKucFmj2lN8dqKWsCUBYXXtkUHILVelRTglMGFLTbLJofXYwUXA60UWWilYvWJ2j4HRjHgxUP7i0fYy4ruy5zpspZ8Svr+PMY9UjA3HSnPhFB2ZHkC+9kzexfVCM7nvKw9LekxY0x/BrD5z6D+652sr8A9EOgBsg9A/soL4JMycdWmTBDe16O5f4Db5Qt7oqn3Hbw7lki1XULIvTzyNhUtoiGiQiCbCh7G1ba+IccvfrIaK+kpmugeoaTC4zldXEGbw== 
[[email protected] ~]# >> /root/.ssh/authorized_keys 
[[email protected] ~]# echo $? 
echo $? 
0 
[[email protected] ~]# exit code: >>>>echo $? 
0 
[[email protected] ~]<<<< 
DEGUG: === append to authorized keys END === 

当我检查远程authorized_keys文件,新的密钥不添加。 看来,密钥被回显到标准输出而不是写入文件。不知道如何解决这个问题。

回答

1

好像你忘了删除尾随\n字符local_public_key。所以试试这样:

child.sendline('echo ' + local_public_key.strip() + ' >> /root/.ssh/authorized_keys') 
#          ^^^^^^^^ 
+0

这就是它......傻我! ;-)谢谢你指出这一点。 – Lidia

相关问题