用paramiko与SSH交互

# 导入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
或者按图运行

上一篇:【青牛科技】汽车收音机调频中频放大器——D1145


下一篇:leetcode 扫描线专题 06-leetcode.252 meeting room 力扣.252 会议室