使用paramiko模块进行交互

import paramiko
import time

__author__ = 'hehe'


def test_paramiko_interact():
    trans = paramiko.Transport(('139.224.107.235', 22))  # 【坑1】 如果你使用 paramiko.SSHClient() cd后会回到连接的初始状态
    trans.start_client()
    # 用户名密码方式
    trans.auth_password(username='root', password='******')
    # 打开一个通道
    channel = trans.open_session()
    channel.settimeout(7200)
    # 获取一个终端
    channel.get_pty()
    # 激活器
    channel.invoke_shell()
    cmd = 'cd /opt\r'
    # 发送要执行的命令
    channel.send(cmd)
    cmd = 'bash test.sh\r'  # 【坑2】 如果你使用 sh ./study_shell.sh\r 可能会出现 [: 11: y: unexpected operator 错误
    channel.send(cmd)
    # 回显很长的命令可能执行较久,通过循环分批次取回回显
    while True:
        time.sleep(0.2)
        rst = channel.recv(65536)
        rst = rst.decode('utf-8')
        print(rst)
        # 通过命令执行提示符来判断命令是否执行完成
        if 'yes/no' in rst:
            channel.send('yes\r')  # 【坑3】 如果你使用绝对路径,则会在home路径建立文件夹导致与预期不符
            time.sleep(0.5)
            ret = channel.recv(65536)
            ret = ret.decode('utf-8')
            print(ret)
            if 'passwd' in ret:
                channel.send("*****\r")
                rest=channel.recv(65536)
                rest=rest.decode('utf-8')
                print(rest)
                break
    channel.close()
    trans.close()
    # channel.invoke_shell()


if __name__ == '__main__':
    test_paramiko_interact()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值