python远程控制
标签(空格分隔): 远程Linux
python远程控制:方案:
- Paramiko
Pexpect(主要Linux机器)
- 安装Paramiko
pip install paramiko --default -timeout=60
pip install paramiko -i https://pypi.douban.com/simple/--trusted-host pypi.douban.com
安装使用:pip install paramiko
- 注意在安装的时候,会有比较慢因为:pip在美国的,而且有一些加密文件,所有会比较慢,所以我们可以设置一个超时时间;
2.保证有一台Linux主机;
3.保证ssh服务开启:用putty、或者:xshell连接试试看;
import paramiko
#创建SSHClient 实例对象
ssh=paramiko.SSHClient()
#调用方法,表示没有存储远程机器的公钥,允许访问
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接远程机器,地址,端口,用户名密码
ssh.connect('192.168.199.236',22,'root','111111')
#创建目录;
cmd = 'mkdir jcy2'
ssh.exec_command(cmd)
#如果命令行跨行
cmd='''echo '123
45678
90abc'
>myfile'''
ssh.exec_command(cmd)
#获取命令行的执行结果
cmd ='cat myfile'
stdin,stdout,stderr =ssh.exec_command(cmd)
print(stdout.read()+stderr.read())
ssh.close()
- 注意点:
exec_command每次执行都会打开一个新的channel,执行;
2.新的环境,不再上次执行的环境里面
3.所以我们不能多次调用,达到多次执行的目的
例如:如下代码:
ssh.exec_command('pwd')
ssh.exec_command('mkdir jcy3')
ssh.exec_command('cd jcy3')
stdin,stdout,stderr =ssh.exec_command('pwd')
print(stdout.read())
ssh.close()
linux 命令:free查看内存信息;
我们以后可以在代码里面每隔5分钟,看一下内存的情况;
- 如下是传输文件到远程:
import paramiko
#创建SSHClient 实例对象
ssh=paramiko.SSHClient()
#调用方法,表示没有存储远程机器的公钥,允许访问
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接远程机器,地址,端口,用户名密码
ssh.connect('192.168.199.236',22,'root','111111')
sftp=ssh.open_sftp()
sftp.put('ftp1.py','home/stt/ftp1.py')
sftp.close()