python-paramiko的初步使用(一)

这篇博客介绍了如何使用Python的Paramiko库进行SSH连接到Linux服务器,包括安装Paramiko、建立SSH连接、发送命令以及处理过程中遇到的异常问题。在执行命令时,由于网络延迟可能导致的问题,通过增加time.sleep()来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装

pip install paramiko
# 如果安装报错can‘t find Rust compiler,或者找不到包等一些奇葩错误,请升级pip后再试一次
# pip升级
# pip install --upgrade pip
# pip3升级
# pip3 install --upgrade pip

二、初步使用

import paramiko
import time
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname="********", port=22, username="username")
channel = ssh.invoke_shell()
time.sleep(0.1)
channel.send("sudo -i \n")
buff = ''
while not buff.endswith(': '): # 如果以': '结尾则输入表示出现输入密码的界面,开始输入密码,注意,空格很重要,有些人:后面没有空格,就一直对不上,一直死循环
    print(buff)
    resp = channel.recv(9999)
    buff += resp.decode('utf-8')
print(buff)
channel.send("*******")
channel.send('\n')
buff = ''
while not buff.endswith('# '):  # 当指令执行结束后,Linux窗口会显示#,等待下条指令,所以可以用作识别>全部输出结束的标志。
    print(2)
    resp = channel.recv(9999)
    buff += resp.decode('utf-8')
print(buff)
print("------end------")
# 查看是否切换成功
channel.send("whoami")
channel.send("\n")
buff = ''
while not buff.endswith('# '):
    resp = channel.recv(9999)
    buff += resp.decode('utf-8')
print(buff)

三、问题及解决

使用过程中出现了很奇怪的报错

Traceback (most recent call last):
  File "/Users/wecash/opt/anaconda3/lib/python3.8/site-packages/paramiko/file.py", line 66, in __del__
  File "/Users/wecash/opt/anaconda3/lib/python3.8/site-packages/paramiko/channel.py", line 1392, in close
  File "/Users/wecash/opt/anaconda3/lib/python3.8/site-packages/paramiko/channel.py", line 991, in shutdown_write
  File "/Users/wecash/opt/anaconda3/lib/python3.8/site-packages/paramiko/channel.py", line 967, in shutdown
  File "/Users/wecash/opt/anaconda3/lib/python3.8/site-packages/paramiko/transport.py", line 1846, in _send_user_message
AttributeError: 'NoneType' object has no attribute 'time'

百度了下,加了个time.sleep(5)竟然起作用了

stdin, stdout, stderr = client.exec_command('ls')
# stdout 为正确输出,stderr为错误输出,同时是有1个变量有值
time.sleep(5)
# 可能因为网络问题造成的,给了命令更长的执行时间就没问题了,具体原因暂时不清楚
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值