2017-08-30 19 views
1

マシンとgoto/var/packagesフォルダにSSHを実行してスクリプトを実行して、アプリケーションのセットアップを自動化しようとしています。予想出力に基づいて送信する。私はpexpectこれを達成することができますが私は私が望む結果を達成することはできませんGoogleから見つかりました。私は次のコードをしようとしている、誰かが私はpython.abstract.Anyヘルプに感謝される初心者としてこれを達成する方法を私に導くことができます。私のアプリケーションのセットアップには、デバッグ用にs.beforeログを使用して正しい軌道に乗っているこのPython pexpectモジュールを使用してシェルの対話型コマンドを自動化する方法

[[email protected] packages]# ./SHR_setup.bin -i console 
    Preparing to install... 
    Extracting the JRE from the installer archive... 
    Unpacking the JRE... 
    Extracting the installation resources from the installer archive... 
    Configuring the installer for this system's environment... 

    Launching installer... 

    =============================================================================== 
    Choose Locale... 
    ---------------- 

     1- Deutsch 
     ->2- English 
     3- Español 
     4- Français 
     5- Italiano 
     6- Nederlands 
     7- Português (Brasil) 

    CHOOSE LOCALE BY NUMBER: 2 
    I accept the terms of the License Agreement (Y/N): Y 
    Please hit Enter to continue: 

Pythonのコード

from pexpect import pxssh 
import pexpect 

    try: 
     s = pxssh.pxssh() 
     hostname = '10.110.40.20' 
     username = 'admin' 
     password = 'admin123' 
     s.login(hostname, username, password) 
     s.sendline('cd /var/packages') # goto /var/packages folder 
     child = pexpect.spawn('./SHR_setup.bin -i console') # start the application setup in packages folder 
     child.expect('CHOOSE LOCALE BY NUMBER') # expect output like this 
     child.sendline('2') 
     s.prompt() 
     print s.before 
    except pxssh.ExceptionPxssh, e: 
     print 'pxssh failed on login' 
     print e 

答えて

0

あなたはないリモートホスト上で、ローカルホスト上でプログラムを実行することになっている

s.sendline('cd /var/packages') 
child = pexpect.spawn('./SHR_setup.bin -i console') 

s.sendline('cd /var/packages') 
s.sendline('./SHR_setup.bin -i console') 

spawn

に変更する必要があります。

0

ようになります。

あなたがやっているアプリケーションは、色と位置のANSIエスケープシーケンスを含むいくつかの難しさを引き起こす可能性があるライン指向よりも画面指向であるように見えます。 child.expect('Something else')を実行することを検討してくださいbeforeに確実に表示されたら、sleep()を実行してから、「盲目的に」「2」または「y」などのいずれかを送信し、送信を一時的に停止します。

+0

@J Hあなたの答えをありがとう、私はそれを試してみます。 'pexpect.spawn( '/ var/packages/SHR_setup.bin -i console')'が使用されているときにエラーが発生しています。 'pexpect.ExceptionPexpect:コマンドが見つからなかったか、実行できませんでした:/var/packages/SHR_setup.bin -i console'。私がやっている間違いを助けてくれますか? – Madhu

関連する問題