这篇文章给大家分享的是有关大蟒中构造模块怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
基础一:#!/usr/bin/env python
来自fabric.api导入*
env.user='root '
env.hosts=['218.78.186.162 ',' 125.208.12.56']
环境。密码={ ' root @ 218。78 .186 .162:22 ' : ' XXX ',' root @ 125。208 .12 .56:22 ' : ' XXXX @ 0 ' }
@runs_once ####runs_once代表只执行一次
def local_task():
本地('主机名')# # # #本地本地任务,不会嘘远程执行
def remote_task():
带cd('/tmp/'):
运行('主机名')# # #运行远程命令
@task ####task标记只有去函数可以调用远程任务函数
def go():
远程任务()
测试
[root @ hostnfsd :/soft/python/py auto/第七章/fab]$ fab-f简单1 _ test。py远程任务# # #直接调用远程任务函数失败
警告:找不到命令:
远程任务
可用命令:
去
[root @ hostnfsd :/soft/python/py auto/第七章/fabric]$ fab-f简单1 _ test。py本地_任务# # #有工作表标识时直接调用当地的函数失败,meitask时才能直接调用当地的函数
警告:找不到命令:
本地任务
可用命令:
g
o
[root@hostnfsd :/soft/python/pyauto/第七章/fabric]$ fab -f simple1_test.py go 通过go函数调用remote_task函数
[218.78.186.162] Executing task 'go'
[218.78.186.162] run: hostname
[218.78.186.162] out: localhost.localdomain
[218.78.186.162] out:
[125.208.12.56] Executing task 'go'
[125.208.12.56] run: hostname
[125.208.12.56] out: host-192-168-1-56
[125.208.12.56] out:
Done.
Disconnecting from 218.78.186.162... done.
Disconnecting from 125.208.12.56... done.
有时我们希望直接用脚本就可以执行,可以如下更改
-
#!/usr/bin/env python
-
from fabric.api import *
-
env.user='root'
-
env.hosts=['218.78.186.162','125.208.12.56']
-
env.passwords={ 'root@218.78.186.162:22':'ESBecs00','root@125.208.12.56:22':'eRaMUnA612@0'}
-
@runs_once
-
def local_task():
-
local("hostname")
-
def remote_task():
-
with cd("/tmp/"):
-
run("hostname")
-
def go():
execute(remote_task) ####execute表示在脚本内执行即可 -
execute(local_task)
go()
直接运行即可
[root@hostnfsd :/soft/python/pyauto/第七章/fabric]$ python simple1_test.py
基础2:
-
#!/usr/bin/env python
-
from fabric.api import *
-
env.user='root'
-
env.hosts=['218.78.186.162','125.208.12.56']
-
env.passwords={ 'root@218.78.186.162:22':'XXX','root@125.208.12.56:22':'XXXX@0'}
-
@runs_once
-
def input_raw():
-
return prompt("please input directory name:",default="/home")
-
def worktask(dirname):
-
run("ls -l "+dirname)
-
@task
-
def go():
-
getdirname = input_raw()
-
worktask(getdirname)
跳板机:
-
#!/usr/bin/env python
-
from fabric.api import *
-
from fabric.context_managers import *
-
from fabric.contrib.console import confirm
-
env.user='root'
-
env.gateway='218.78.186.162'
-
env.hosts=['125.208.12.56']
-
env.passwords={ 'root@218.78.186.162:22':'XX','root@125.208.12.56:22':'XXXX@0'}
-
lpackpath="/home/install/lnmp0.9.tar.gz"
-
rpackpath="/tmp/install"
-
@task
-
def put_task():
-
run("mkdir -p /tmp/install")
-
with settings(warn_only=True):
-
result = put(lpackpath, rpackpath)
-
if result.failed and not confirm("put file failed, Continue[Y/N]?"):
-
abort("Aborting file put task!")
-
@task
-
def run_task():
-
with cd("/tmp/install"):
-
run("tar -zxvf lnmp0.9.tar.gz")
-
run("ls -l")
-
@task
-
def go():
-
put_task()
-
run_task()
有时需要将这些功能模板写到django中,那么我们可以将该功能封装到一个类中
-
#!/usr/bin/env python
-
from fabric.api import * -
class Student(object): -
def __init__(self,user,ip): -
env.user=user -
env.hosts=[ip] -
env.password='XXX' -
@runs_once -
def local_task(self): -
local("hostname") -
-
def remote_task(self): -
vhost=run("df -h") -
return vhost -
-
def yunxing(user,ip): -
tom=Student(user,ip) -
print execute(tom.remote_task) -
-
-
yunxing('root','218.78.186.162') ###直接调用该函数传参即可
感谢各位的阅读!关于“python中Fabric模块怎么用”这篇文章就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/158491.html