我不真亦不假 2023-04-09 10:42 采纳率: 100%
浏览 48
已结题

用python建立ssh连接后在运行窗口实现类似终端界面的操作

用python建立ssh连接后在运行窗口实现类似终端界面的操作
类似于finalshell一样建立连接后实现对终端的操作。
用代码实现不是直接pycharm连接

  • 写回答

3条回答 默认 最新

  • 语言-逆行者 2023-04-09 10:51
    关注

    基于new Bing的回答:
    可以使用paramiko模块来实现在Python中建立SSH连接并通过命令行进行操作。以下是一个简单的示例代码:

    import paramiko
    
    # 建立SSH连接
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname='your_hostname', username='your_username', password='your_password')
    
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('ls -l')
    output = stdout.read().decode('utf-8')
    print(output)
    
    # 关闭SSH连接
    ssh.close()
    
    

    在上面的代码中,我们首先使用paramiko模块建立SSH连接。然后,我们使用exec_command()方法执行一个命令,并通过stdout读取输出。最后,我们关闭SSH连接。

    如果你想要在Python中实现一个类似终端界面的操作,可以使用Python的标准库cmd模块。以下是一个简单的示例代码:

    import cmd
    import paramiko
    
    class SSHShell(cmd.Cmd):
        intro = 'Welcome to the SSH shell. Type help or ? to list commands.\n'
        prompt = '(ssh) '
    
        def __init__(self, hostname, username, password):
            super().__init__()
            self.ssh = paramiko.SSHClient()
            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            self.ssh.connect(hostname=hostname, username=username, password=password)
    
        def do_exec(self, arg):
            """Execute a command on the remote host."""
            stdin, stdout, stderr = self.ssh.exec_command(arg)
            output = stdout.read().decode('utf-8')
            print(output)
    
        def do_exit(self, arg):
            """Exit the shell."""
            self.ssh.close()
            return True
    
    if __name__ == '__main__':
        shell = SSHShell('your_hostname', 'your_username', 'your_password')
        shell.cmdloop()
    
    

    在上面的代码中,我们定义了一个名为SSHShell的类,它继承自cmd.Cmd类。我们在SSHShell类的构造函数中建立SSH连接。然后,我们定义了两个命令:exec和exit。exec命令用于执行远程命令,而exit命令用于退出终端界面。最后,我们在main函数中创建了一个SSHShell对象并调用了cmdloop()方法,这将启动一个类似终端的命令行界面。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月9日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装