我是python的新手,如果这个问题很无聊,我道歉。简单地说,我需要编写一个脚本,通过ssh连接到远程,然后telnet到localhost并在那里的shell上执行命令。
我正在使用Python 2.4.3。我在这里已经阅读了很多类似的问题,很多人建议使用Paramiko,Pexpect等模块。但这是不可能的 - 我应该只使用“原生”2.4.3库。我已经尝试搞乱子进程模块,我已经设法连接到远程shell(但我需要提供密码 - 我想通过在脚本中提供密码来避免这种情况) - 但我还是需要做一个telnet到localhost并在不同的shell上执行几个命令。
有人可以这么善良并给我一些提示吗?提前谢谢。
TL; DR我正在寻找python替代这个bash命令:
./ sshpass -p password ssh username @ $ ip -t“(sleep 1; echo”command“; sleep 1)| telnet localhost $ port; exit; bash”>> testing.txt
答案 0 :(得分:2)
经过简单搜索后:
<强>远程登录强>: link
import getpass
import sys
import telnetlib
HOST = "hostname"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()
<强> SSH 强>: link
import pxssh
import getpass
try:
s = pxssh.pxssh()
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login (hostname, username, password)
s.sendline ('uptime') # run a command
s.prompt() # match the prompt
print s.before # print everything before the prompt.
s.sendline ('ls -l')
s.prompt()
print s.before
s.sendline ('df')
s.prompt()
print s.before
s.logout()
except pxssh.ExceptionPxssh, e:
print "pxssh failed on login."
print str(e)