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
![](https://images2018.cnblogs.com/blog/1243110/201807/1243110-20180702123037646-2146846094.png)
3、下载putty远程连接Linux工具
Putty 下载地址 :
https://the.earth.li/~sgtatham/putty/0.70/w32/putty-0.70-installer.msi
![](https://images2018.cnblogs.com/blog/1243110/201807/1243110-20180702123607013-1079183525.png)
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