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

安装成功之后,开始第二个工具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

 

 

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

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

pytty连接时候报错:connection refused,百度一圈,以为是SSH的问题,结果是IP连接错误导致,

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

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

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

 

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()

 

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())

  

总结:

第一步:导入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

 

posted @ 2018-06-30 16:01  小青~  阅读(14198)  评论(0编辑  收藏  举报