投稿したことがないので、さらに情報が必要な場合はお知らせください。リモートのLinuxボックスにログインしてファイルシステムの調査を行うためのPythonスクリプトに取り組んでいます。時々、sudoコマンドに使用されたパスワードが標準出力に何度も書き込まれるという非常に奇妙な問題があります。かなりランダムなので、どのように複製するかは正確にはわかりませんが、実行したことのないリモートボックスでより頻繁に発生するようです. これがプログラムです。IP フィールドを実行しようとしているものに変更するだけです。すべてのディストリビューションで確実に機能するように、コマンドを非常にシンプルにしました。これはプログラムの最終バージョンではありません。非常にずさんなため、見苦しいフォーマットで私を殺さないでください。
#!/usr/bin/python
# Testing filesystem information using python
import paramiko
import getpass
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
IP = 'hostname'
port = '22'
username = raw_input("Please enter your username:")
password = getpass.getpass(prompt='Please type your password:')
ssh.connect(IP, port, username, password)
transport = ssh.get_transport()
session1 = transport.open_session()
session1.get_pty()
dfdata= """df -m
"""
session1.exec_command('df -m')
while True:
if session1.recv_ready():
dfdata += session1.recv(65536)
if session1.exit_status_ready():
break
session1.close()
session2 = transport.open_session()
session2.get_pty()
dudata = """sudo du -amx /home | sort -nr | head -15
"""
session2.exec_command('sudo du -amx /home | sort -nr | head -15')
while True:
if session2.recv_ready():
dudata += session2.recv(65536)
if session2.send_ready():
session2.send("%s\n" % password)
if session2.exit_status_ready():
break
session2.close()
transport.close()
ssh.close()
print "\ndf Results:\n%s\n\ndu Results:\n%s" % (dfdata, dudata)