成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python遠程連接服務器用它就夠了

開發 后端
本文我就將帶大家學習在Python中使用非常強大的fabric庫來對常用的遠程服務器連接管理操作進行自動化。

簡介

日常工作中經常需要通過SSH連接到多臺遠程服務器來完成各種任務,當需要操作的服務器眾多,且要執行的任務涉及命令繁多時,如果可以以自動化的方式模擬SSH連接及執行命令的繁瑣過程,對工作效率的提升是非常可觀的。

本文我就將帶大家學習在Python中使用非常強大的fabric庫來對常用的遠程服務器連接管理操作進行自動化:

[[438617]]

一、使用fabric玩轉遠程服務器管理

fabric基于強大的paramiko、invoke等庫,構建出一整套簡單易用的API,使得我們使用簡潔的語句就可以應付常見的各種遠程服務器操作,使用pip install fabric完成安裝,本文演示對應版本為2.6。

1. 連接到遠程服務器并執行終端命令

要建立并保持對遠程服務器的連接,我們需要對fabric.Connection()進行實例化,其基礎參數有:

  • 「host:」 str型,格式如'用戶名@host:端口',其中':端口'部分可以省略,默認端口為22
  • 「connect_kwargs:」 dict型,用于傳入其他連接所需參數,常用的有:

其他可用參數你可以前往

https://docs.paramiko.org/en/latest/api/client.html#paramiko.client.SSHClient.connect的Parameters了解更多。

  • 「password:」 str型,當以密碼方式連接時,用于傳入與host參數對應的密碼
  • 「pkey:」 str型,當以私鑰方式連接時,用于設置對應密鑰
  • 「timeout:」 float型,用于設置TCP連接的超時時長(單位:秒)
  • 「config:」 fabric.Config型,用于設置更多復雜功能參數,詳見https://docs.fabfile.org/en/2.6/api/config.html

先來看一個最基礎的例子:

  1. from fabric import Connection 
  2.  
  3. # 建議將ssh連接所需參數變量化 
  4. user = '用戶名' 
  5. host = 'host地址' 
  6. password = '密碼' 
  7.  
  8.  
  9. # 利用fabric.Connection快捷創建連接 
  10. c = Connection(host=f'{user}@{host}'
  11.                connect_kwargs=dict
  12.                    passwordpassword=password 
  13.                )) 
  14.  
  15. # 利用run方法直接執行傳入的命令 
  16. c.run('pwd'); 

可以看到,非常簡單就完成了連接服務器及執行指定命令的過程,且run()方法所執行的命令打印出的結果,可以通過stdout屬性進行保存:

  1. hide=True抑制run()過程對執行結果的自動打印 
  2. output = c.run('df -h', hide=True).stdout 
  3. print(output) 

獲悉了fabric的基礎使用后,接下來我們來學習一些進階內容:

2. 配置sudo命令密碼自動預填入

我們都知道,對于非root用戶,在執行某些權限較高的命令時需要添加sudo前綴,并在會話的初次執行時需要手動輸入當前用戶的密碼,而在fabric中,有兩種方式可以實現這個步驟的自動化:

(1) 方式1:配合invoke.Responder

我們可以配合invoke.Responder來實現當命令行返回密碼輸入提示時,自動輸入并執行指定的命令:

  1. from invoke import Responder 
  2.  
  3. # 配置命令行內容監聽規則 
  4. sudopass = Responder
  5.     pattern=f'\[sudo\] password for {user}:'
  6.     response=password+'\n' 
  7.  
  8. # 注意需要設置pty=True 
  9. c.run('sudo pwd', pty=Truewatchers=[sudopass]); 

(2) 方式2:利用fabric.Config設置sudo密碼

除了上一種方式外,我們還可以使用fabric.Config在創建連接時就一次性提前配置好sudo密碼,之后需要執行sudo命令時用sudo()方法代替run()方法即可:

  1. from fabric import Config 
  2.  
  3. # 預先配置sudo密碼 
  4. config = Config(overrides={ 
  5.     'sudo': { 
  6.         'password': password 
  7.     } 
  8. }) 
  9.  
  10. c = Connection(host=f'{user}@{host}',  
  11.                connect_kwargs={'password': password}, 
  12.                configconfig=config) 
  13.  
  14. c.sudo('pwd'); 

3.  遠程文件傳輸

很多朋友都知道可以使用pscp、xshell之類的工具手動進行服務器與本地之間的文件相互傳輸,這些任務我們同樣可以在fabric中自動化進行:

(1) 從本地上傳文件到服務器

使用put()方法可以將指定的本地文件上傳至服務器的指定位置,remote參數對應服務器目標保存位置:

  1. c = Connection(host=f'{user}@{host}',  
  2.                connect_kwargs={'password': password}) 
  3.  
  4. # 創建示例文件 
  5. with open('file_transfer.txt', 'w') as d: 
  6.     d.write('1') 
  7.  
  8. # 利用put方法上傳至服務器 
  9. c.put('file_transfer.txt', remote='/home/feffery/'
  10.  
  11. # 打印已上傳文件內容 
  12. c.run('cat /home/feffery/file_transfer.txt'); 

(2) 從服務器下載指定文件到本地

相反的,當我們需要從服務器取回指定文件到本地時,就可以使用get()方法:

  1. c = Connection(host=f'{user}@{host}',  
  2.                connect_kwargs={'password': password}) 
  3.  
  4. # 向文件末尾追加行 
  5. c.run('echo "\n2" >> file_transfer.txt') 
  6.  
  7. c.get('/home/feffery/file_transfer.txt') 
  8.  
  9. print(open('file_transfer.txt').read()) 

 

責任編輯:趙寧寧 來源: Python大數據分析
相關推薦

2020-12-31 05:29:25

數據庫Powerdesign建模

2017-11-22 14:35:02

Hadoop數據Reduce

2015-05-05 15:24:42

TCPIPVNC遠程

2010-09-08 15:14:36

2020-11-18 11:26:45

SpringCloudZuulJava

2021-09-29 11:46:05

遠程服務器VSCode

2010-02-22 17:45:50

CentOS VSFT

2021-03-15 08:34:26

FormatterSpringFormatterRe

2020-11-13 10:36:53

Navicat數據庫

2010-02-26 13:28:41

Fedora vncs

2012-05-07 16:55:21

Putty遠程連接Linux

2017-07-17 15:50:44

戴爾服務器延展性

2021-04-20 10:15:34

Spring ClouZuul架構

2021-06-02 14:45:52

遠程服務器Python

2010-06-18 09:55:06

SQL Server

2023-02-21 10:07:23

2011-03-31 17:02:19

MySQL數據庫遠程連接

2018-07-30 09:09:45

WindowsUbuntuLinux服務器

2010-05-11 09:27:14

Sun的保修協議Oracle全球保修協

2010-09-08 13:14:43

OracleSPARCNetra
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品区一区二 | 91久久精品国产 | 婷婷综合网 | 国产在线一区二区三区 | 亚洲综合大片69999 | www.久久精品视频 | 成人欧美一区二区三区色青冈 | 日韩欧美视频在线 | 久久久久久久亚洲精品 | 91亚洲精选 | 国产在线一区二 | 精品亚洲一区二区三区 | 天天影视网天天综合色在线播放 | 一区精品视频在线观看 | 国产999精品久久久久久绿帽 | 久久99精品久久久久 | 国产高清在线视频 | 中文字幕av第一页 | 欧美性生活免费 | 久久y| 国产精品国产精品国产专区不卡 | 狠狠操婷婷 | 97国产一区二区精品久久呦 | 秋霞国产 | 国产成人亚洲精品 | 男人的天堂在线视频 | 欧美国产在线一区 | 99视频网| 日本久久久久久久久 | 视频一区欧美 | 91在线看网站 | 免费久久久 | 国产精品欧美日韩 | 美女毛片免费看 | av网站在线免费观看 | 日本涩涩网 | 国产日韩欧美在线观看 | www.久久久.com | 亚洲精品中文字幕在线观看 | 成人午夜 | 国产成人区 |