我需要远程检查不同服务器上是否存在某些文件。服务器在Linux和AIX中。
我尝试了python telnet并且linux shell在登录时的行为有所不同所以我需要使用不同的操作系统不同的代码来识别提示符号,以便我可以通过telnet发出命令:
Linux的:
tn = telnetlib.Telnet(self.mHost)
tn.read_until(b"login: ")
tn.write(self.mUsername.encode('ascii') + b"\n")
tn.read_until(b"Password: ")
tn.write(self.mPassword.encode('ascii') + b"\n")
(tn.read_until(b"$")).decode('ascii')
AIX:
tn2 = telnetlib.Telnet(self.mHost)
tn2.read_until(b"login: ")
tn2.write(self.mUsername.encode('ascii') + b"\n")
tn2.read_until(b"Password: ")
tn2.write(self.mPassword.encode('ascii') + b"\n")
(tn2.read_until(b">")).decode('ascii')
连接成功后,我使用简单的'ls'命令检查文件。
ls -ltr | awk -F" " '{print $5 "|" $6 "-" $7 "-" $8 "|" $9}' | tail -n 20
然而,bash shell和ksh shell在某些命令中的行为可能会有所不同,所以我需要一次一次写入运行的解决方案。
可用选项:Java 6,Python 3.0
答案 0 :(得分:0)
Asusming这两个服务器都是基于UNIX / Linux的,并且运行了一个SSH守护程序,您可以使用(Fabric)[http://docs.fabfile.org/en/1.8/api/contrib/files.html#fabric.contrib.files.exists}的fabric.contrib.exists()
函数调用。
互动示例:
from fabric.api import execute
from fabric.contrib.files import exists
>>> execute(exists, "data.csv", hosts=["localhost"])
[localhost] Executing task 'exists'
{'localhost': True}