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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM