2

投稿したことがないので、さらに情報が必要な場合はお知らせください。リモートの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)
4

0 に答える 0