0

pepexpect を使用してルーターにログインしています。私が行う方法は、Linux サーバーにログインしてからルーターにログインすることです。

usr = 'myusername'
pwd='mypwd'
child.sendline('ssh -o StrictHostKeyChecking=no -l '+usr+' '+ip)
index = child.expect(['assword:', pexpect.EOF,pexpect.TIMEOUT])

ルーターに手動でログインすると、次のようになります。

WARNING NOTICE: This is a private system. The actual or attempted, unauthorized
access, use or modification of this system is strictly prohibited.
Individuals undertaking such unauthorized access, use or modification are
subject to company disciplinary proceedings and/or criminal and civil penalties
under applicable domestic and foreign laws. The use of this system may be
monitored and recorded for administrative and security reasons in accordance
with local law. If such monitoring and/or recording reveals possible evidence
of criminal activity, the results of such monitoring may be provided to law
enforcement officials. Continued use of this system after receipt of this
notice constitutes consent to such security monitoring and recording.
!
Global Baseline Configuration:  v1.0

Cisco Wide Area Application Engine

username@10.58.218.237's password: 

パスワードが出力にあるとしても、インデックスの結果は 2 = pexpect.TIMEOUT です。私のスクリプトは他のルーターで機能しますが、なぜこのルーターで機能しないのかわかりません。ありがとう

4

1 に答える 1

1

プロンプトを埋めるために pexpect を使用するのに苦労しましたが、うまくいくものを書くことができました:

def call_and_type(command, prompt_regex, entry):
    p = pexpect.spawn(command, logfile=sys.stdout, maxread=16384)
    index = p.expect_exact([prompt_regex, pexpect.EOF])
    if index == 0:
        p.setecho(False)
        p.sendline(entry)
        while p.read():
            pass
于 2013-08-13T20:19:02.977 に答える