编写脚本通过SSH在远程设备中运行一个简单的命令。例如,查询远程设备的CPU或RAM信息。为了达到这一目标,实现需要安装第三方库paramiko。
然后使用paramiko模块创建一个远程会话连接Unix设备。
然后,通过这个会话,我们可以读取远程设备中的/proc/cpuinfo文件,获取CPU信息。
import argparse
import getpass
import paramiko
RECV_BYTES = 4096
COMMAND = 'cat /proc/cpuinfo'
def print_remote_cpu_info(hostname, port, username, password):
client = paramiko.Transport((hostname, port))
client.connect(username=username, password=password)
stdout_data = []
stderr_data = []
session = client.open_channel(kind='session')
session.exec_command(COMMAND)
while True:
if session.recv_ready():
stdout_data.append(session.recv(RECV_BYTES))
if session.recv_stderr_ready():
stderr_data.append(session.recv_stderr(RECV_BYTES))
if session.exit_status_ready():
break
print('exit status: '.format(session.recv_exit_status()))
print(''.join(stdout_data))
print(''.join(stderr_data))
session.close()
client.close()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Remote file copy')
parser.add_argument('--host', action="store", dest="host", default='localhost')
parser.add_argument('--port', action="store", dest="port", default=22, type=int)
given_args = parser.parse_args()
hostname, port = given_args.host, given_args.port
username = raw_input("Enter the username:")
password = getpass.getpass("Enter password for %s: " %username)
print_remote_cpu_info(hostname, port, username, password)