天天看点

python实现远程控制Linux

为何要使用Linux?

因为很多后端程序都搭建在Linux上面,可以实现一些手工重复性的发包工作

1、自动安装产品到Linux上

2、自动化用例的一些步骤

运维

1、环境监控

2、数据的自动获取分析

需要的环境和工具:

1、安装paramiko  

  国内网站安装:pip install paramiko -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

       国外网站安装:pip install paramiko --default -timeout=60

python实现远程控制Linux

安装成功之后,开始第二个工具Linux的安装

2、

百度搜索,安装虚拟机管理器 virtualbox 或者 vmvareplayer, 创建 64位 虚拟机,
安装centos镜像
      
cetos6.9 下载地址 :
http://mirrors.163.com/centos/6.9/isos/x86_64/CentOS-6.9-x86_64-bin-DVD1.iso
虚拟机下载地址
https://pan.baidu.com/s/1dzmawpqmK5PuCBipIwLXoA#list/path=%2F%E8%99%9A%E6%8B%9F%E6%9C%BA%2FVMware%20Workstation%20%26%20%20KeyGen&parentPath=%2F%E8%99%9A%E6%8B%9F%E6%9C%BA
安装虚拟机--新建虚拟机添加centos.IOS

        
python实现远程控制Linux

3、下载putty远程连接Linux工具

Putty 下载地址 :
https://the.earth.li/~sgtatham/putty/0.70/w32/putty-0.70-installer.msi

        
python实现远程控制Linux
pytty连接时候报错:connection refused,百度一圈,以为是SSH的问题,结果是IP连接错误导致,

Linux 虚拟机:Network error: Connection refused 排查:https://blog.csdn.net/congcong68/article/details/52965978/

查看虚拟机中的linuxIP,用命令ifconfig----注意不是ipcopnfig

python实现远程控制Linux

连接成功之后进入命令行页面

python实现远程控制Linux

putty连接的ip尽量写具体的ip,不要写localhost

 4、python脚本实现远程连接linux,可以添加删除文件夹、文件等linux命令,并可以实现serureCRT从Windows中copy文件到linux

代码如下

# coding utf-8
# author:Caoxueqing

import paramiko

# 创建SSHClient实例对象
ssh = paramiko.SSHClient()

# 调用方法,标识没有远程机器的公钥,允许访问
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程机器 地址端口用户名密码
ssh.connect("192.168.17.1",22,"root","111111")

# 创建目录

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()      
python实现远程控制Linux
python实现远程控制Linux
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(\'192.168.17.128\',22,\'root\',\'111111\')

stdin,stdout,stderr = ssh.exec_command(\'ls\')
print(stdout.read())

sftp = ssh.open_sftp()
sftp.put(r\'C:\Users\Administrator\PycharmProjects\ssh\s1.py\',\'/home/s1.py\')

stdin,stdout,stderr = ssh.exec_command(\'ls;cd /home;ls;pwd\')
print(stdout.read())
      

  

python实现远程控制Linux

总结:

第一步:导入paramiko

第二步:创建SSHClient实例对象:ssh = paramiko.SSHClient()

第三步:即使没有公钥也可以访问:ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

第四步:连接远程linux机器:ssh.connect(\'linux所在机器的host\',SSH端口号一般默认22,‘登录linux的用户名’,‘对应的密码’)

第四步:执行linux命令:ssh.excute_command(\'pwd\'),执行多条命令用;隔开

第五步:获取输入输出及错误:把第四步赋值给stdin,stdout,stderr = ssh.excute_command(\'pwd;mkdir aaaa;ls\')

传文件:sftp = ssh.open_sftp()   sftp.put(\'源文件\',“要拷贝的地址”) sftp.get()--从Linux往Windows拷贝
结束时候一定要加上 ssh.close      

常见的linux命令:

ls:查看当前目录下内容

pwd:获取当前路径

sudo:用管理员权限

切换用户:su [user]切换到其他用户,但是不切换环境变量,su - [user]则是完整的切换到新的用户环境。 su root

tail:用于输出文件尾部内容  例如 tail -f 100 log.txt

cat:

echo:

sh:

grep:

history:

mkdir:

chmod:改变读写权限

rm:rm a.txt 删除a文件  rm -f a.txt 强行删除a文件

命令大全:https://www.cnblogs.com/everfight/p/linux_note.html