# 导入paramiko库用于SSH连接,以及sys库用于处理命令行参数 import paramiko import sys # 定义一个函数send_command,用于发送命令到SSH服务器并打印输出结果 def send_command(ssh_client, cmd): # 使用exec_command方法执行命令,并获取输入、输出和错误流 stdin, stdout, stderr = ssh_client.exec_command(cmd) # 打印命令的标准输出 print(stdout.read().decode('utf-8')) # 如果有标准错误输出,也打印出来 if stderr.read().decode('utf-8'): print(stderr.read().decode('utf-8')) # 定义一个函数connect,用于建立SSH连接 def connect(host, port, user, password): try: # 创建SSHClient实例 ssh_client = paramiko.SSHClient() # 设置策略,自动添加主机密钥到本地HostKeys对象,不需要手动确认 ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 使用提供的主机、端口、用户名和密码连接到SSH服务器 ssh_client.connect(host, port, username=user, password=password) return ssh_client except paramiko.AuthenticationException: # 如果认证失败,打印错误信息 print("Authentication failed, please verify your credentials") return None except paramiko.SSHException as sshException: # 如果无法建立SSH连接,打印错误信息 print(f"Could not establish SSH connection: {sshException}") return None except Exception as e: # 如果发生其他异常,打印错误信息 print(f"An error occurred: {e}") return None # 定义主函数main def main(): # 检查命令行参数的数量是否正确 if len(sys.argv) != 5: print("Usage: python SSH僵尸网络.py <host> <port> <user> <password>") return # 从命令行参数中获取主机、端口、用户名和密码 host = sys.argv[1] port = int(sys.argv[2]) # 确保端口是整数 user = sys.argv[3] password = sys.argv[4] # 尝试建立SSH连接 ssh_client = connect(host, port, user, password) # 如果连接成功 if ssh_client: # 进入循环,持续接收命令 while True: # 获取用户输入的命令 command = input("请输入要执行的命令(输入'exit'退出):") # 如果输入的是exit,就跳出循环并关闭连接 if command.lower() == "exit": ssh_client.close() break # 发送并执行命令 send_command(ssh_client, command) # 检查是否为主模块运行,如果是,则执行main函数 if __name__ == '__main__': main() 运行命令:python SSH_client.py IP 端口号 username password 或者按图运行