【python】Python ssh 远程执行shell命令

 


前言:

Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录。首先来看一个简单的例子

工具:

python 2.7
paramiko

案例:

import paramiko #实例化ssh客户端 ssh = paramiko.SSHClient() #创建默认的白名单 policy = paramiko.AutoAddPolicy() #设置白名单 ssh.set_missing_host_key_policy(policy) #链接服务器 ssh.connect( hostname = "192.168.2.186", #服务器的ip port = 22, #服务器的端口 username = "root", #服务器的用户名 password = "123" #用户名对应的密码 ) #远程执行命令 stdin,stdout,stderr = ssh.exec_command("ls") #exec_command 返回的对象都是类文件对象 #stdin 标准输入 用于向远程服务器提交参数,通常用write方法提交 #stdout 标准输出 服务器执行命令成功,返回的结果 通常用read方法查看 #stderr 标准错误 服务器执行命令错误返回的错误值 通常也用read方法 #查看结果,注意在Python3 字符串分为了:字符串和字节两种格式,文件返回的是字节 # 按字节返回结果 result = stdout.read().decode() print(result) # 按行返回结果 for i in stdout.readlines(): print(i)

免密登录

import paramiko ## 远程执行shell命令获取redash supervisor的pid信息 def remote_supervisor(): redash_node = ['10.11.68.224', '10.11.68.225'] # 端口 port=22 # 用户名 username='root' # 秘钥 pkey='/root/.ssh/id_rsa' key=paramiko.RSAKey.from_private_key_file(pkey) for i in redash_node: s=paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.load_system_host_keys() s.connect(i, port, username, pkey=key) stdin,stdout,stderr=s.exec_command("supervisorctl status |grep 'redash_rq:redash_rq' |awk '{print $1, $4}'") print stdout.read()

报错

问题一:

paramiko远程连接服务器报错:paramiko.ssh_exception.SSHException: Server '10.114.2.3' not found in known_hosts

解决方法:

# 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) -----加上这一句 # 连接服务器 ssh.connect(hostname=hostname,port=22, username=username, password=password)

参考:

  • ·https://blog.csdn.net/weixin_38051795/article/details/78826758
  • https://blog.csdn.net/jkx521/article/details/98521562

__EOF__

本文作者彬在俊
本文链接https://www.cnblogs.com/erlou96/p/16878288.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   彬在俊  阅读(1767)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示