Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将SSH和telnet连接到本地主机_Python_Shell_Ssh_Telnet - Fatal编程技术网

使用python将SSH和telnet连接到本地主机

使用python将SSH和telnet连接到本地主机,python,shell,ssh,telnet,Python,Shell,Ssh,Telnet,我是python新手,如果这个问题很难回答,我道歉。简单地说,我需要编写一个脚本,通过ssh连接到remote,然后将Telnet连接到localhost,并在shell上执行一个命令 我正在使用Python 2.4.3。我在这里读过很多类似的问题,很多人建议使用Paramiko、Pexpect等模块。但是这是不可能的——我应该只使用“原生”2.4.3库。我尝试过使用子流程模块,并且成功地连接到远程shell(但是我需要提供密码——我希望通过在脚本中提供密码来避免这种情况)——但是我仍然需要对l

我是python新手,如果这个问题很难回答,我道歉。简单地说,我需要编写一个脚本,通过ssh连接到remote,然后将Telnet连接到localhost,并在shell上执行一个命令

我正在使用Python 2.4.3。我在这里读过很多类似的问题,很多人建议使用Paramiko、Pexpect等模块。但是这是不可能的——我应该只使用“原生”2.4.3库。我尝试过使用子流程模块,并且成功地连接到远程shell(但是我需要提供密码——我希望通过在脚本中提供密码来避免这种情况)——但是我仍然需要对localhost执行telnet,并在不同的shell上执行一些命令

有人能给我一些提示吗?提前谢谢

TL;DR I正在寻找python替代此bash命令:

./sshpass-p password ssh username@$ip-t“(睡眠1;echo“command;睡眠1)| telnet localhost$port;退出;bash”>>testing.txt

简单搜索后:

telnet

ssh


你到底想完成什么?如果您是通过
ssh
登录的,那么使用
telnet localhost
没有任何意义——它只是添加了一个不安全的本地第二个连接。这是我在技术大学上的编程课程。基本上,我们在服务器上安装了fedora,通过localhost将各种网络设备连接到它。我们需要做的是登录到服务器,然后连接到这些设备,在它们的自定义shell上执行命令,并将输出保存到桌面上的文件中。两周前,我们在bash中做了同样的事情——我们就是这样做的。现在我们需要做同样的事情,但是使用python。您需要在ssh连接中使用python吗?那真的毫无意义。一旦进入,您就进入了一个shell。但是通过ssh端口转发,您可以公开端口并使用本机
socket
调用连接到这些端口。这就是你想要的吗?我们要做的是用python编写一个连接到设备的脚本,执行一个命令并将输出保存到一个文件中。此设备作为具有给定端口的本地主机连接到具有给定ip的Fedora的远程服务器。对不起,我只是一个二年级的学生,所以请原谅我的无知-不知道你的意思。对于bash,它相当简单,因为我使用了如下命令:./sshpass-p password ssh username@$ip-t“(sleep 1;echo“command;sleep 1)| telnet localhost$port;exit;bash”>>testing.txt-我想用python做一些类似的事情。非常感谢!我会努力让它工作!该死,我的机器上没有pxssh,除了我拥有的模块之外,我不应该使用任何其他模块:有没有办法通过ssh与子进程连接并提供密码?@sztyrymyty您可以尝试向
stdin
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()
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)