python fabric 多个命令
python fabric multiple commands
我试图了解 fabric 如何在一台机器上处理多个命令。
我需要在每个主机(数千台主机)上 运行 几个命令,并且想知道什么是最好的。
使用多个 运行:
res_1 = run(command_1)
res_2 = run(command_2)
...
...
res_n = run(command_n)
或者:
res = run(command_1 && command_2 && ... command_n)
res.splitlines()
res_1 = res[0]
res_2 = res[1]
...
...
res_n = res[n-1]
我想知道 fabric 如何处理多个 运行s,它会打开多个会话还是在同一会话中执行所有命令?
这两种方法的重要区别在于,第一种方法将 运行 所有命令,而不管先前命令的退出状态如何;但是,第二个将仅在 command_1 未返回错误等情况下执行 commmand_2。因此,如果您想要此行为或其他行为,则由您决定。
无论您使用多个 run
调用还是使用 &&
的单个 run
调用,据我所知,fabric 只会打开一个网络连接。两者的区别在于每个new run
执行的环境不同。例如你可以试试这个。
run('ls')
run('cd /tmp/')
run('ls')
两次它都会显示您的主目录列表。但是如果你试试这个
run('ls')
run('cd /tmp/ && ls')
它将首先显示您的主目录,然后是 /tmp/
的列表。因此,如果您希望状态从一个命令保留到另一个命令,您应该执行 run('cmd1 && cmd1')
,但如果您不介意,则应该使用多个 run
调用。
我试图了解 fabric 如何在一台机器上处理多个命令。 我需要在每个主机(数千台主机)上 运行 几个命令,并且想知道什么是最好的。
使用多个 运行:
res_1 = run(command_1)
res_2 = run(command_2)
...
...
res_n = run(command_n)
或者:
res = run(command_1 && command_2 && ... command_n)
res.splitlines()
res_1 = res[0]
res_2 = res[1]
...
...
res_n = res[n-1]
我想知道 fabric 如何处理多个 运行s,它会打开多个会话还是在同一会话中执行所有命令?
这两种方法的重要区别在于,第一种方法将 运行 所有命令,而不管先前命令的退出状态如何;但是,第二个将仅在 command_1 未返回错误等情况下执行 commmand_2。因此,如果您想要此行为或其他行为,则由您决定。
无论您使用多个 run
调用还是使用 &&
的单个 run
调用,据我所知,fabric 只会打开一个网络连接。两者的区别在于每个new run
执行的环境不同。例如你可以试试这个。
run('ls')
run('cd /tmp/')
run('ls')
两次它都会显示您的主目录列表。但是如果你试试这个
run('ls')
run('cd /tmp/ && ls')
它将首先显示您的主目录,然后是 /tmp/
的列表。因此,如果您希望状态从一个命令保留到另一个命令,您应该执行 run('cmd1 && cmd1')
,但如果您不介意,则应该使用多个 run
调用。