Вопрос

Поэтому мне нужно получить доступ к сеансу Telnet. Более конкретно служба Ephemeris 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

А затем после этого есть большой вывод, который мне нужно сохранить в текстовом файле или просто сохранить переменную. Я буду использовать это позже.

И после этих входов шаг за шагом должен привести к тому, что вам необходимо получить точную информацию, которая мне нужно взять

Любой совет?

Это было полезно?

Решение

я хотел бы использовать 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 вокруг интерфейса Telnet от JPL. Он может быть найден здесь:

https://pypi.python.org/pypi/horizonjpl

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top