Python paramiko模块之SSH SFTP

本文探讨了在Python中使用paramiko模块通过SSH执行命令时遇到的问题,如命令执行不显示结果、线程阻塞等。通过示例说明了如何在SSH会话中切换用户、目录以及处理长时间运行的命令。建议使用类封装ssh命令发送功能以提高实用性。
摘要由CSDN通过智能技术生成

使用SSH 的exec_command() 远端执行命令很方便,但是对于切换用户,切换目录,ssh到另外的单板,或者需要一定时间响应的操作等就比较难以实现了。

比如:

ssh.exec_command("cd /tmp")
ssh.exec_command("ls -l")

执行的结果却不显示/tmp目录下的文件列表

又如:

ssh.exec_command("su - oracle")

这样将导致程序卡死无响应,执行切换用户命令后,ssh模块处于接受报文的阻塞状态,而客户端是收不到回执信息的,也不会终止连接,导致线程处于等待状态

又如:

ssh.exec_command("tcpdump -i eth0")

发送命令后,服务器端执行命令的子进程处于工作状态,不会立即结束返回,发送命令的线程将处于阻塞状等待态,除非某个时刻,在服务器端kill掉了执行命令的子进程,才会返回报文激活当前线程。

当然,用ssh的write方法可能可以解决上述的一些问题,但是不好用类进行封装,实际开发时,对于一般的应用还是将相关的功能封装一下用起来会比较舒服。

下面简单的构造了一个类,封装ssh的发送命令功能。

import paramiko

#定义SSH类
class SSH:
    __
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值