python - 格式化 Python Fabric 输出
问题描述
我正在尝试将脚本放在一起以通过主机列表进行 ssh 并测试某个进程是否正在运行,然后为每个主机打印出该进程是否正在运行。这是一个例子:
from fabric.api import *
import getpass
env.user = user'
env.password = getpass.getpass(prompt='Password: ', stream=None)
env.hosts = ['localhost']
def uptime():
run("uptime")
def getinfo():
hostname = run("hostname")
run("ps aux | grep -i apache")
这里的问题是,有多个名为 apache 的进程,因此它输出一个巨大的列表,而不是在遍历服务器列表时仅仅说出“Apache 正在主机 1 上运行”的效果。我如何使用 python 以这种方式格式化输出,或者在 Linux 中将其作为实际 shell 命令的一部分(ps aux | grep -i apache)?
解决方案
我想到了。问题是打开文件不正确,这实际上是有效的。
from fabric.api import *
import getpass
env.user = 'user'
env.password = getpass.getpass(prompt='Password: ', stream=None)
env.hosts = ['localhost']
def uptime():
run("uptime")
def hostname():
run("hostname")
def getinfo():
hostname = run("hostname")
f = open("output.txt", "a")
with hide('output'):
var1 = run("ps aux | grep -i steam")
if var1:
print("Steam is running on " + hostname, file=f)
elif var1:
print("Steam is not running on " + hostname, file=f)
f = open("output.txt", "a")
with hide('output'):
var1 = run("ps aux | grep -i pidgin")
if var1:
print("Pidgin is running on " + hostname, file=f)
elif var1:
print("Pidgin is not running on " + hostname, file=f)
f = open("output.txt", "a")
with hide('output'):
var1 = run("ps aux | grep -i firefox")
if var1:
print("Firefox is running on " + hostname, file=f)
elif var1:
print("Firefox is not running on " + hostname, file=f)
f.close()
推荐阅读
- git - git stash 跟踪但新文件
- python - 为什么 Pandas Dataframe.where 方法在调用 dropna() 后返回 NaN?
- azure - 如何通过 Azure AD API 禁用教职员工许可证中的特定应用程序?
- c# - 如何在 iOS 本机代码或 Unity C# 中知道电话设备当前是否正在通话?
- python-3.x - TypeError:需要一个类似字节的对象,而不是 Geniatagger 的“str”?
- react-native - 有没有办法在另一个网络上运行(预览)博览会项目?
- reactjs - 将组件状态传递给兄弟
- intellij-idea - 如何通过相对路径或使用环境变量在 Idea http 编辑器中处理文件名?
- scala - countWindow 和 timeWindow 如何连接?
- php - 索引为 google.com 的网站和所有页面均被排除在外