当前位置: 首页 > news >正文

使用Paramiko时遇到的一些问题

目录

1.背景

2.问题合集

1)“bash: command not found”

2)Paramiko中正常的输入,却到了stderr,而stdout是空

3)命令实际是alias


1.背景

        在自动化脚本中,使用了库Paramiko,远程SSH到后台服务器上做一些操作。常用操作都OK,但部分命令还是出现有一些问题。

2.问题合集

1)“bash: command not found”

        关于这个问题,网上已经有很多文章给了原因和解决方法。

  •         原因

        默认的paramiko.SSHClient()不以“登录”模式运行shell,也不为会话分配伪终端。所以,对于非交互式会话中,.bash_profile没有来源,获取不到环境变量。

  •         解决方案

        原始命令:curl http://locahost:8081

        最简单方法:

ssh.exec_command("bash --login -c 'curl http://locahost:8081'")
  •         参考

使用 Python Paramiko exec_command 执行时,某些 Unix 命令失败并显示“<command> not found”答案 - 爱码网

 paramiko连接centos7使用某些命令提示command not found_神经娃娃的博客-CSDN博客_paramiko bash: 未找到命令

使用paramiko中 Server not found in known_hosts的错误解决_weixin_34038652的博客-CSDN博客

2)Paramiko中正常的输入,却到了stderr,而stdout是空

        目前也不知道为什么Paramiko会把这个命令的输出,收集在了stderr中。不过,也还是有办法。例如:

        原始命令:curl http://locahost:8081。输出的stderr中。

  •         解决方法

        将stderr的内容重定向到stdout。

ssh.exec_command('curl http://localhost:8081 2>&1')
  •         参考

在Paramiko中执行curl时,它的输出是stderr,而不是stdout - 问答 - 腾讯云开发者社区-腾讯云

Linux如何在Bash中将标准错误stderr重定向到stdout标准输出 - 腾讯云开发者社区-腾讯云

3)命令实际是alias

  •         原因

        一些命令可能为了方便,做了一些alias。虽然在SSH会话上执行是可以的,但通过paramiko时就不一定能成功了。如果使用下面这样的方法,执行后就会报错:command not found。

ssh.exec_command('pod')

        先找到别名的原始命令,例如:

# cat /opt/bin/common/cmds.sh#!/bin/bashalias pod='kubectl get --all-namespaces pod -o wide'
  •         解决方法

        使用原本的命令即可。

ssh.exec_command('kubectl get --all-namespaces pod -o wide')

http://www.lryc.cn/news/8752.html

相关文章:

  • 数据预处理(无量纲化、缺失值、分类特征、连续特征)
  • 【C#基础】C# 运算符总结
  • 存储性能软件加速库(SPDK)
  • 微服务(五)—— 服务注册中心Consul
  • 冷冻电镜 - ChimeraX Density Map 密度图 操作
  • Matlab 点云旋转之轴角式
  • 2023美赛数学建模资料思路模型
  • Nginx配置HTTP强制跳转到HTTPS
  • 从实现到原理,聊聊Java中的SPI动态扩展
  • 3、MySQL字符集
  • 大漠插件最新中文易语言模块7.2302
  • 极客大挑战 2021
  • C#开发的OpenRA加载文件的管理
  • SSM实现文件上传
  • OPENCV计算机视觉开发实践-图像的基本概念
  • Android 9.0 ResolverActivity.java多个app选择界面去掉始终保留仅有一次
  • 【算法 | 例题简答】相关例题讲解
  • 浅谈AQS
  • 关于服务连接器(Servlet)你了解多少?
  • 面对学员的投诉,中创教育是如何处理的?
  • 算法问题——排序算法问题
  • ArcGIS网络分析之构建网络分析数据集(一)
  • 微电影的行业痛点有哪些?
  • spark3.0源码分析-driver-executor心跳机制
  • 数据分析就要选择这款免费报表工具
  • node学习-3:服务器渲染和客户端渲染
  • LeetCode刷题笔记和周赛题解总目录
  • 用类比方式学习编程中函数递归(个人理解仅供参考)(内含汉诺塔问题的求解)
  • 【云原生之Docker实战】使用Docker部署Taskover开源个人任务管理工具
  • 5、SQL编程开发与注意事项