2017-09-27 11 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 ===" 

が出力されます:私は、リモートでauthorized_keysファイルをチェックインすると

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 === 

、新しいキーが追加されません。 鍵はファイルに書き込まれるのではなく標準出力にエコーされるようです。これを解決する方法が不明です。

答えて

1

\nチャイルドを削除するのを忘れたようです(local_public_key)。だからこのようにしてみてください:

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

それは...愚かな私でした! ;-)これを指摘してくれてありがとう。 – Lidia

関連する問題