2

我从未发布过,所以如果我需要更多信息,请告诉我。我一直在编写一个 python 脚本来登录远程 linux 机器并为我做一些文件系统调查。我有一个非常奇怪的问题,每隔一段时间,它会将用于 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