【问题标题】:Accessing a telnet session in python在 python 中访问 telnet 会话
【发布时间】:2013-11-19 15:56:25
【问题描述】:

所以我需要访问一个 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

然后有一个大的输出,我需要保存到一个文本文件,或者只是作为一个变量保存。以后会用到。

按照这些输入一步一步地操作应该可以让您获得我需要获取的确切信息

有什么建议吗?

【问题讨论】:

    标签: python telnet telnetlib


    【解决方案1】:

    我会使用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])
    

    【讨论】:

    • 正是我需要的。谢谢
    【解决方案2】:

    在 2013 年 4 月和 5 月之间,实际上有些人围绕 JPL 的 Horizo​​ns Telnet 接口编写了一个完整的 Python 包。可以在这里找到:

    https://pypi.python.org/pypi/HorizonJPL

    【讨论】:

      猜你喜欢
      • 2014-05-05
      • 2013-08-24
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 2019-11-06
      • 2013-05-15
      相关资源
      最近更新 更多