Чтобы отправить команды роботу, который подключен к серверу в системе Linux - PullRequest
0 голосов
/ 03 октября 2019

Мы подключаем манипулятор робота Kawasaki к компьютеру, как показано на изображении 'Скриншот терминала'.

1.input'plink- telnet 192.168.0.2 'в терминале для подключения к нему.

Терминал вернет «логин:». Мы введем 'как' и введем.

3. Терминал покажет стрелку вправо, мы предполагаем, что для ввода 'EXECUTE WRINKLER' с DOUBLE введите

снимок экрана терминала

Вот коды

import subprocess
import os
os.chdir('/') #set to root directory
subprocess.call('plink -telnet 192.168.0.2', shell=True) #input the string in a terminal

subprocess.call('as', shell=True)
subprocess.run('as, shell=True)
os.system('as')

Мы пробовали subprocess.call subprocess.run и os.system, но ни один из них не вводил «как», как показано на втором скриншоте, 2-й скриншот

Кроме того, как ввести 'EXECUTE WRINKLER' с двойным вводом?

Ваша помощь очень ценится.

1 Ответ

0 голосов
/ 03 октября 2019

Не используйте subprocess для этого. В Python есть специальная библиотека - telnetlib.

Внизу документации приведен пример, который, вероятно, может быть адаптирован для вашей цели.

import telnetlib

HOST = "192.168.0.2"
user = 'as'

tn = telnetlib.Telnet(HOST)

tn.read_until(b"login: ")
tn.write(user.encode('ascii') + b"\n")

tn.read_until(b">")

tn.write(b"EXECUTE WRINKLER\n\n")

print(tn.read_all().decode('ascii'))

НадеюсьУ меня нет telnet-сервера или манипулятора робота Kawasaki, но я предполагаю, что это может сработать, и «двойной ввод» должен быть достигнут с помощью \n\n, который передается во второй последней строке.

...