欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

paramiko神器远程执行linux命令

程序员文章站 2022-03-03 19:22:01
paramiko及其依赖安装由于工作的服务器不通外网,只能下载包及其依赖进行手动安装。python版本2.7.16 + centos7requirements.txt :bcrypt-3.1.7cffi-1.14.3cryptography-3.1.1enum34-1.1.10paramiko-2.7.2pycparser-2.20pynacl-1.4.0paramiko模块的简单使用import paramiko##1.创建一个ssh对象client = param...

一。paramiko及其依赖安装

由于工作的服务器不通外网,只能下载包及其依赖进行手动安装。

python版本2.7.16 + centos7

requirements.txt :

bcrypt-3.1.7
cffi-1.14.3
cryptography-3.1.1
enum34-1.1.10
paramiko-2.7.2
pycparser-2.20
pynacl-1.4.0

二。paramiko模块的简单使用

import paramiko ##1.创建一个ssh对象 client = paramiko.SSHClient() #2.解决问题:如果之前没有,连接过的ip,会出现选择yes或者no的操作, ##自动选择yes client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #3.连接服务器 client.connect(hostname='192.168.224.152', port=22, username='root', password='root') #4.执行操作 stdin,stdout, stderr = client.exec_command('ls /') #5.获取命令执行的结果 result=stdout.read().decode('utf-8') print(result) #6.关闭连接 client.close() 

三。问题发现

1.若导入paramiko使用时报错如下:

ImportError: /usr/lib/panda3d/libpandaexpress.so: undefined symbol: PyUnicodeUCS4_AsWideChar

2.原因分析:
python2.7.*和某个你用的库编译时指定的UCS编码方式不对,python2.7.x默认是使用UCS2.

3.验证

import sys if sys.maxunicode > 65535: print 'UCS4 build' else: print 'UCS2 build' 

4.问题修复

(1)重新编译python进行安装(若环境中python是大家共用的,请勿卸载,可自行指定目录安装供自己使用)

su - root
cd /root
mkdir -p /root/MyPython
wget https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tgz
tar -xvf ./Python-2.7.17.tgz # 安装依赖 yum install openssl-devel libffi-devel xz-devel -y
yum install bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y
yum install ncurses-devel libpcap-devel zlib-devel tk-devel -y # 编译前配置 cd ./Python-2.7.17/ # 通过--prefix指定安装路径 ./configure --prefix=/root/MyPython --enable-shared #或者打开优化选项 ./configure --prefix=/root/MyPython --enable-shared --enable-optimizations --enable-unicode=ucs4 #则需据实际情况用加入如下选项重新编译 --enable-unicode=ucs4
或者 --enable-unicode=ucs2 # 编译安装 make
make altinstall 

安装完成后重新进行第3步复验,若输出 UCS4 build 表示编译安装成功。
使用时需指定该python解释器执行python脚本。

(2)重新编译库.

如果使用的是./configure这样的编译方式,如果你的./configure --help没有unicode的选择,那么在./configure之后,

在config.h内增加

#define Py_UNICODE_SIZE 4

然后再make,make install之类的,就搞定拉.

本文地址:https://blog.csdn.net/qq_27525737/article/details/109017666