Как я могу выполнить команду tcl [используя приглашение tclsh] удаленно, используя модуль python 2.7? - PullRequest
0 голосов
/ 10 июня 2019

Вот мои настройки.Windows PC1, где работает код Python 2.7 ----> Windows PC2, где установлен tcl.

Windows PC1 и Windows PC2 подключены через локальную сеть и имеют возможность доступа друг к другу.

Теперь яхотите открыть строку CMD (как администратор) ПК2 с ПК1 с помощью python и выполнить команду windows.Да, это может быть достигнуто с помощью paramiko.

Теперь я хочу запустить команду "tclsh" в командной строке PC2.После этого командная строка переходит в приглашение tcl [%]. Здесь я могу выполнить команду tcl, например, «Welcome».Поэтому, если я пытаюсь выполнить команду "tclsh" через paramiko, она находится в состоянии ожидания, так как приглашение было изменено с приглашения Windows на%.

Я собираюсь запустить команду tcl в приглашении tclsh [PC2 cmd line]через python [PC1].

Пример: с ПК1, который я хочу выполнить, "переводит" Hello "в приглашение PCL tcl через python2.7.

Пожалуйста, предложите мне некоторую идею, что можетиспользовать [модуль python или любой другой подход] для доступа к приглашению tclsh через python 2.7.

Через paramiko обычные команды Windows работают, как и ожидалось, но tclsh входит в приглашение%, поэтому в этом сценарии paramiko не работает.

Я хочу получить доступ к приглашению tcl через python 2.7 удаленно.

Я хочу выполнить команду tcl внутри приглашения tclsh в удаленной системе через python. Вот небольшая программа, которую я пробовал.

host = '192.168.1.4'
user = 'lenovo'
passw = 'XXX'

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=user, password=passw)
stdin, stdout, stderr = ssh.exec_command('tclsh')
print (str('.'.join(stdout.readlines())))
print (str('.'.join(stdin.readlines())))
print (str('.'.join(stderr.readlines())))

Но я не вижу никакого вывода, так как tclsh переходит в новое приглашение%. Как мне решить эту проблему? После того, как у меня есть доступ к приглашению tclsh%, я хочувыполнить " ставит" Welcome "". Вместо tclsh, если дать команду "hostname" windows, я получаю ответ.

1 Ответ

0 голосов
/ 28 июня 2019

Я получил решения для доступа к приглашению tclsh для удаленного компьютера с Windows, используя pramiko в python 2.7.

Шаг 1: Используйте метод оболочки invoke для команды tclsh в первый раз и сохраните возвращение invoke_shell в переменную globa. Предположим, возвращаемое значение равно x.

Шаг 2: Теперь для любой другой команды для приглашения tclsh [например, cmd = ставит "стек"] используйте как x.send (cmd + "\ n")

Шаг 3: Теперь мы можем получить выходной буфер, например, x.recv (9999)

Примечание [Только для окон]: x.recv (9999) возвращает фактический вывод со многими escape-последовательностями. Мы должны очистить это, чтобы получить фактические данные.

...