fabric是python2.5或者更高的库,可以通过ssh在多个host上批量执行任务.完成系统管理任务.它提供一套基本操作在本地和远程执行shell命令,或者上传下载文件,辅助提供用户输入或终止执行.
下面安装fabric模块有2种方法:
1.使用easy_install(下面是debain5环境)
root@10.1.6.200:pshell# apt-get install python-dev (安装Python头文件) root@10.1.6.200:pshell# apt-get install python-setuptools (安装easy_install) root@10.1.6.200:pshell# wget http://peak.telecommunity.com/dist/ez_setup.py root@10.1.6.200:pshell# python ez_setup.py root@10.1.6.200:pshell# easy_install fabric
Searching for fabric Reading http://pypi.python.org/simple/fabric/ Best match: Fabric 1.6.1 Downloading http://pypi.python.org/packages/source/F/Fabric/Fabric-1.6.1.tar.gz#md5=c318ac3f7011ede0be1ca9a20f435735 Processing Fabric-1.6.1.tar.gz Running Fabric-1.6.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-CVuLrs/Fabric-1.6.1/egg-dist-tmp-ZFNoWY warning: no previously-included files matching '*' found under directory 'docs/_build' warning: no previously-included files matching '*.pyc' found under directory 'tests' warning: no previously-included files matching '*.pyo' found under directory 'tests' zip_safe flag not set; analyzing archive contents... fabric.version: module references __file__ Adding Fabric 1.6.1 to easy-install.pth file Installing fab script to /usr/bin .... Installed /usr/lib/python2.5/site-packages/pycrypto-2.6-py2.5-linux-x86_64.egg Finished processing dependencies for fabric
2.使用pip(下面使用的是debian7环境)
apt-get install python-pip pip install fabric apt-get install python-paramiko
导入模块未报错说明安装成功.
实例:
1.在调用fabric的时候使用命令行参数,-H 指定哪台主机
root@10.1.6.201:python# cat fabfile4.py
#!/usr/bin/env python #coding=utf-8 from fabric.api import * def printMem(): cmd_output = run('free -m') print cmd_output
root@10.1.6.201:python# fab -H root@10.1.1.45 printMem -f fabfile4.py [root@10.1.1.45] Executing task 'printMem' [root@10.1.1.45] run: free -m [root@10.1.1.45] Login password for 'root': #提示输入密码 [root@10.1.1.45] out: total used free shared buffers cached [root@10.1.1.45] out: Mem: 1005 968 37 0 36 831 [root@10.1.1.45] out: -/+ buffers/cache: 100 904 [root@10.1.1.45] out: Swap: 1913 0 1913 [root@10.1.1.45] out:
total used free shared buffers cached Mem: 1005 968 37 0 36 831 -/+ buffers/cache: 100 904 Swap: 1913 0 1913 Done. Disconnecting from 10.1.1.45:22000... done.
2.以上我们需要输入密码才能完成操作,怎样自动执行呢?可以在fabfile4文件中配置HOST.也就是环境变量.
root@10.1.6.201:python# vim fabfile.py
#!/usr/bin/env python #coding=utf-8 from fabric.api import * from fabric.context_managers import * env.host_string = '10.1.1.45' env.port = '22000' #默认端口22,默认登录用户root env.password='passwd' def test1(): with cd('/home'): run('ls -l') test1()
root@10.1.6.201:python# python fabfile.py #脚本执行
[10.1.1.45] run: ls -l [10.1.1.45] out: total 8 [10.1.1.45] out: drwxr-xr-x 2 debian debian 4096 2012-08-27 11:54 debian [10.1.1.45] out: drwxr-xr-x 2 root nogroup 4096 2013-05-22 18:07 ftp [10.1.1.45] out:
root@10.1.6.201:python# vim fabfile1.py
#!/usr/bin/env python #coding=utf-8 from fabric.api import * from fabric.context_managers import * env.hosts = ['10.1.6.200','10.1.1.45'] env.port = '22000' env.password='passwd' def test1(): with cd('/home'): #更改目录 run('ls -l')
root@10.1.6.201:python# fab test1 -f fabfile.py #使用fab指定任务执行,注意文件后默认跟fabfile.py
[10.1.6.200] Executing task 'test1' [10.1.6.200] run: ls -l [10.1.6.200] out: total 24 [10.1.6.200] out: drwxr-xr-x 2 davehe davehe 4096 2013-02-27 10:00 davehe [10.1.6.200] out: -rw-r--r-- 1 root root 1990 2013-02-27 09:55 davehe.tar.gz [10.1.6.200] out: -rw-r--r-- 1 root root 396 2013-05-17 18:27 rsync_log_130517 [10.1.6.200] out: -rw-r--r-- 1 root root 7916 2013-05-20 21:04 rsync_log_130520 [10.1.6.200] out: drwxr-xr-x 2 taomee taomee 4096 2013-01-29 04:27 taomee [10.1.6.200] out: [10.1.1.45] Executing task 'test1' [10.1.1.45] run: ls -l [10.1.1.45] out: total 8 [10.1.1.45] out: drwxr-xr-x 2 debian debian 4096 2012-08-27 11:54 debian [10.1.1.45] out: drwxr-xr-x 2 root nogroup 4096 2013-05-22 18:07 ftp [10.1.1.45] out: Done. Disconnecting from 10.1.1.45:22000... done. Disconnecting from 10.1.6.200:22000... done.
3.使用get/put.利用sftp协议上传下载文件
root@10.1.6.201:python# cat fabfile1.py
#!/usr/bin/env python #coding=utf-8 from fabric.api import * from fabric.colors import * from fabric.context_managers import * env.hosts = ['10.1.1.45'] env.port = '22000' env.password='passwd' def test1(): print(red("i'm 201")) local('ls -l /tmp') def test2(): print (green("i'm get file 45 to 186")) get('/home/ftp/a.txt','/tmp/') #下载 # put('/tmp/','/home/ftp/') #上传 local('ls -l /tmp') #local运行本地命令 def final(): execute(test1) execute(test2)
root@10.1.6.201:python# fab final -f fabfile1.py
[10.1.1.45] Executing task 'final' [10.1.1.45] Executing task 'test1' i'm 201 [localhost] local: ls -l /tmp total 31684 drwxr-xr-x 2 root root 4096 May 13 22:08 bin drwxr-xr-x 3 root root 4096 May 13 22:08 conf drwxr-xr-x 6 root root 4096 May 13 22:08 etc -rwxr-xr-x 1 root root 6797 May 13 22:08 init -rw-r--r-- 1 root root 32400896 May 13 22:07 initrd.img-3.2.0-4-amd64 drwxr-xr-x 6 root root 4096 May 13 22:08 lib drwxr-xr-x 2 root root 4096 May 13 22:08 lib64 drwxr-xr-x 2 root root 4096 May 13 22:08 run drwxr-xr-x 2 root root 4096 May 13 22:08 sbin drwxr-xr-x 6 root root 4096 May 13 22:08 scripts [10.1.1.45] Executing task 'test2' i'm get file 45 to 186 [10.1.1.45] download: /tmp/a.txt <- /home/ftp/a.txt [localhost] local: ls -l /tmp total 31688 -rw-r--r-- 1 root root 6 May 29 22:29 a.txt drwxr-xr-x 2 root root 4096 May 13 22:08 bin drwxr-xr-x 3 root root 4096 May 13 22:08 conf drwxr-xr-x 6 root root 4096 May 13 22:08 etc -rwxr-xr-x 1 root root 6797 May 13 22:08 init -rw-r--r-- 1 root root 32400896 May 13 22:07 initrd.img-3.2.0-4-amd64 drwxr-xr-x 6 root root 4096 May 13 22:08 lib drwxr-xr-x 2 root root 4096 May 13 22:08 lib64 drwxr-xr-x 2 root root 4096 May 13 22:08 run drwxr-xr-x 2 root root 4096 May 13 22:08 sbin drwxr-xr-x 6 root root 4096 May 13 22:08 scripts Done. Disconnecting from 10.1.1.45:22000... done.
上面实例中只列举了几个常用的farbic环境变量.如env.hosts,env.password等,可以不需要交互输入密码.
以下还有常用环境变量以供参考:
- exclude_hosts:指定一个主机列表,在fab执行时,忽略列表中的机器
- user:ssh使用哪个用户登录远程主机
- hosts :全局的host列表
- host_string :当fabric连接远程机器执行run、put时,设置的user/host/port等
- password:默认ssh连接远程主机密码,也可以是sudo提示输入密码
- password:一个字典供内部使用,为每台主机host设置密码,key是主机,value值存放密码
- port:设置默认端口
- roledefs:使用字典定义角色名字对应的主机ip
- roles:一个全局的role列表
from fabric.api import run, roles env.roledefs = { 'db': ['db1', 'db2'], 'web': ['web1', 'web2', 'web3'], } @roles('db') def migrate(): # Database stuff here. pass @roles('web') def update(): # Code updates here. pass
fab也可以使用命令设置环境变量,常用命令
- -f FABFILE, --fabfile=FABFILE 默认fabfile.py
- -H HOSTS, --hosts=HOSTS env.hosts=hosts
- -p PASSWORD, --password=PASSWORD env.password
- -R ROLES, --roles=ROLES env.roles

Die Flexibilität von Python spiegelt sich in Multi-Paradigm-Unterstützung und dynamischen Typsystemen wider, während eine einfache Syntax und eine reichhaltige Standardbibliothek stammt. 1. Flexibilität: Unterstützt objektorientierte, funktionale und prozedurale Programmierung und dynamische Typsysteme verbessern die Entwicklungseffizienz. 2. Benutzerfreundlichkeit: Die Grammatik liegt nahe an der natürlichen Sprache, die Standardbibliothek deckt eine breite Palette von Funktionen ab und vereinfacht den Entwicklungsprozess.

Python ist für seine Einfachheit und Kraft sehr beliebt, geeignet für alle Anforderungen von Anfängern bis hin zu fortgeschrittenen Entwicklern. Seine Vielseitigkeit spiegelt sich in: 1) leicht zu erlernen und benutzten, einfachen Syntax; 2) Reiche Bibliotheken und Frameworks wie Numpy, Pandas usw.; 3) plattformübergreifende Unterstützung, die auf einer Vielzahl von Betriebssystemen betrieben werden kann; 4) Geeignet für Skript- und Automatisierungsaufgaben zur Verbesserung der Arbeitseffizienz.

Ja, lernen Sie Python in zwei Stunden am Tag. 1. Entwickeln Sie einen angemessenen Studienplan, 2. Wählen Sie die richtigen Lernressourcen aus, 3. Konsolidieren Sie das durch die Praxis erlernte Wissen. Diese Schritte können Ihnen helfen, Python in kurzer Zeit zu meistern.

Python eignet sich für eine schnelle Entwicklung und Datenverarbeitung, während C für hohe Leistung und zugrunde liegende Kontrolle geeignet ist. 1) Python ist einfach zu bedienen, mit prägnanter Syntax, und eignet sich für Datenwissenschaft und Webentwicklung. 2) C hat eine hohe Leistung und eine genaue Kontrolle und wird häufig bei der Programmierung von Spielen und Systemen verwendet.

Die Zeit, die zum Erlernen von Python erforderlich ist, variiert von Person zu Person, hauptsächlich von früheren Programmiererfahrungen, Lernmotivation, Lernressourcen und -methoden und Lernrhythmus. Setzen Sie realistische Lernziele und lernen Sie durch praktische Projekte am besten.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac
Visuelle Webentwicklungstools