SSH и telnet к локальному хосту с использованием python

Я новичок в Python, и если вопрос очень nooby, я прошу прощения. Проще говоря, мне нужно написать скрипт, который соединяется с удаленным через ssh, а затем telnets к localhost и выполняет там команду на оболочке.

Я использую Python 2.4.3. Я прочитал много подобных вопросов здесь, и многие люди предлагают использовать такие модули, как Paramiko, Pexpect и т. Д. Однако это не подлежит сомнению - я должен использовать только "родные" библиотеки 2.4.3. Я попытался возиться с модулем подпроцесса, и мне удалось подключиться к удаленной оболочке (однако мне нужно предоставить пароль - и я хотел бы избежать этого, предоставив пароль в сценарии, например) - но все же мне нужно сделать telnet к localhost и выполнить несколько команд в другой оболочке.

Может ли кто-то быть таким добрым и дать мне несколько советов? Заранее спасибо.

TL; DR Я ищу python альтернативу этой команде bash:

./sshpass -p пароль ssh username@$ip -t "(sleep 1;echo " команда "; sleep 1) | telnet localhost $port; выход;bash" >> testing.txt

1 ответ

Решение

После простого поиска:

телнет: ссылка

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: ссылка

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)
Другие вопросы по тегам