1.什么是paramiko?
paramiko是一个基于ssh用于连接远程服务器做操作的模块,该模块可以进行远程执行命令或文件操作
###paramiko远程密码连接###
1.import paramiko #导入模块
2.client = paramiko.SSHClient( ) #创建一个ssh对象
3.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #首次连接时需要输入yea完成认证,这步是自动选择yes
4.连接主机。参数分别是主机ip,要连接的用户和用户密码
5.client.exec_command(‘要执行的命令’) # 连接成功后,在被连接的主机中执行命令,这个操作返回一个元组,元组中存在三个元素,分别为标准输入 标准输出 错误输出
6.stdin,stdout,stderr = client.exec_command(’’) #使用变量接受返回的内容
7.stdout.read( ).decode(‘utf-8’) #获取标准输出结果 decode(‘utf-8’) 返回结果中有中文时正常显示
import paramiko
#ssh username@ip
client = paramiko.SSHClient() #创建一个ssh对象
#解决的问题:如果之前没有连接过的ip(主机),会出现
"""
The authenticity of host '172.25.0.101 (172.25.0.101)' can't be established.
ECDSA key fingerprint is 9d:37:08:8e:a4:ad:45:b5:eb:69:6f:d2:88:d3:da:8c.
Are you sure you want to continue connecting (yes/no)? yes
"""
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动选择yes
#连接服务器
client.connect(
hostname='172.25.254.40',
username='root',
password='redhat'
)
#执行操作
#标准输入 标准输出 错误输出
stdin,stdout,stderr = client.exec_command('cat /ect/passwd')
#获取命令的执行结果
print(stdout.read().decode('utf-8'))
client.close() # 关闭连接
运行结果
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator: