如何根据两个不同的目录发送命令
How can I send a command according to two differentes directories
我有一个 python 脚本使用 paramiko 从几个服务器获取一些信息。
我的问题是一些服务器有一个名为 Middleware(大写字母)的目录,其余的是 middleware.
执行命令:
stdin, stdout, stderr = client.exec_command("ls -d /u01/app/oracle/Middleware/OPatch")
这个命令的问题是,当服务器有 middleware 目录时它不起作用。
我如何运行此命令根据每个目录访问两个目录(Middleware 或 middleware)服务器?
ps: 我不能这样做ls -d /u01/app/oracle/*/OPatch
因为这个目录中还有其他文件夹。
感谢
你可以先测试一下哪个存在
if [ -d /u01/app/oracle/Middleware/OPatch ];then
stdin, stdout, stderr = client.exec_command("ls -d /u01/app/oracle/Middleware/OPatch")
elif [ -d /u01/app/oracle/middleware/OPatch ];then
stdin, stdout, stderr = client.exec_command("ls -d /u01/app/oracle/middleware/OPatch")
fi
以下利用 [Mm]iddleware
的解决方案对我有用:
import paramiko
client = paramiko.SSHClient()
client.load_system_host_keys()
def main():
client.connect('myhostname')
stdin, stdout, stderr = client.exec_command("ls -d /home/myuser/[Mm]iddleware")
for line in stdout.read().splitlines():
print("stdout:", line)
for line in stderr.read().splitlines():
print("stderr:", line)
if __name__ == "__main__":
main()
输出结果如下:
stdout: b'/home/myuser/Middleware'
我有一个 python 脚本使用 paramiko 从几个服务器获取一些信息。 我的问题是一些服务器有一个名为 Middleware(大写字母)的目录,其余的是 middleware.
执行命令:
stdin, stdout, stderr = client.exec_command("ls -d /u01/app/oracle/Middleware/OPatch")
这个命令的问题是,当服务器有 middleware 目录时它不起作用。
我如何运行此命令根据每个目录访问两个目录(Middleware 或 middleware)服务器?
ps: 我不能这样做ls -d /u01/app/oracle/*/OPatch
因为这个目录中还有其他文件夹。
感谢
你可以先测试一下哪个存在
if [ -d /u01/app/oracle/Middleware/OPatch ];then
stdin, stdout, stderr = client.exec_command("ls -d /u01/app/oracle/Middleware/OPatch")
elif [ -d /u01/app/oracle/middleware/OPatch ];then
stdin, stdout, stderr = client.exec_command("ls -d /u01/app/oracle/middleware/OPatch")
fi
以下利用 [Mm]iddleware
的解决方案对我有用:
import paramiko
client = paramiko.SSHClient()
client.load_system_host_keys()
def main():
client.connect('myhostname')
stdin, stdout, stderr = client.exec_command("ls -d /home/myuser/[Mm]iddleware")
for line in stdout.read().splitlines():
print("stdout:", line)
for line in stderr.read().splitlines():
print("stderr:", line)
if __name__ == "__main__":
main()
输出结果如下:
stdout: b'/home/myuser/Middleware'