如何根据两个不同的目录发送命令

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'