Доступ к сеансу Telnet в Python
Поэтому мне нужно получить доступ к сеансу Telnet. Более конкретно, эфемеридная служба JPL. Я точно знаю, что мне нужно сделать в командной строке, но у меня возникли проблемы с использованием telnetlib
пакет.
Вот шаги, которые мне нужно выполнить через командную строку:
telnet
o horizons.jpl.nasa.gov 6775
DES=C/2012 X1;
y
E
o
H06
y
2013-Nov-7 9:00
2013-Nov-17 9:00
1d
y
1,4,9,19,20,24
и после этого появляется большой вывод, который мне нужно сохранить в текстовом файле или просто сохранить как переменную. Я буду использовать это позже.
И следуя этим шагам шаг за шагом, вы получите точную информацию, которую мне нужно получить.
Любой совет?
2 ответа
Решение
Я хотел бы использовать telnetlib.Telnet.expect()
, что-то вроде этого:
import telnetlib
t = telnetlib.Telnet()
t.open('horizons.jpl.nasa.gov', 6775)
expect = ( ( r'Horizons>', 'DES=C/2012 X1\n' ),
( r'Continue.*:', 'y\n' ),
( r'Select.*E.phemeris.*:', 'E\n'),
( r'Observe.*:', 'o\n' ),
( r'Coordinate center.*:', 'H06\n' ),
( r'Confirm selected station.*>', 'y\n'),
( r'Accept default output.*:', 'y\n'),
( r'Starting *UT.* :', '2013-Nov-7 09:00\n' ),
( r'Ending *UT.* :', '2013-Nov-17 09:00\n' ),
( r'Output interval.*:', '1d\n' ),
( r'Select table quant.* :', '1,4,9,19,20,24\n' ),
( r'Scroll . Page: .*%', ' '),
( r'Select\.\.\. .A.gain.* :', 'X\n' )
)
with open('results.txt', 'w') as fp:
while True:
try:
answer = t.expect(list(i[0] for i in expect), 10)
except EOFError:
break
fp.write(answer[2])
fp.flush()
t.write(expect[answer[0]][1])
В период с апреля по май 2013 года некоторые люди фактически написали целый пакет Python для интерфейса JPL Horizons Telnet. Это можно найти здесь: