使用python SSH和telnet到localhost

时间:2015-02-03 09:31:58

标签: python shell ssh telnet

我是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

1 个答案:

答案 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)