execメソッド(commandline.CommandLineクラス)
引数に指定したコマンドを実行します。
[メソッド名]
exec(*tpl_command, logging = commandline.DEFAULT)
[引数]
- *tpl_command
-
タプル型
- 第一要素
-
実行する運用コマンドおよびコンフィグレーションコマンドの文字列とパラメータ文字列。
- 第二要素以降
-
二つの要素を持つ内部タプル。第一要素に対話式コマンドの質疑文字列,第二要素に応答文字列を持ちます。
- 最終要素
-
コマンド応答のタイムアウト時間(単位:秒)。指定できる値の範囲は0〜86400です。この要素は省略できます。
- logging
-
本メソッドから実行するコマンドのログを,show loggingコマンドの表示対象とするかどうかを設定します。
-
commandline.ENABLE
本メソッドから実行するコマンドのログを,show loggingコマンドで表示します。
-
commandline.DISABLE
本メソッドから実行するコマンドのログを,show loggingコマンドで表示しません。ただし,show loggingコマンド実行時にscript-onlyパラメータ,またはscript-includeパラメータを指定した場合は表示します。
この引数のデフォルト値はcommandline.DEFAULTです。commandline.DEFAULTを指定した場合(本パラメータの指定を省略した場合)は,set_default_loggingメソッドで指定した値が適用されます。
-
[戻り値]
- 辞書型
-
- キー値 'result'
-
-
commandline.OK:コマンド実行成功
-
commandline.TIMEOUT:コマンド応答タイムアウト
-
- キー値 'strings'
-
コマンド実行結果の文字列。コマンド応答タイムアウトで終了した場合はタイムアウトまでのコマンド実行結果を格納します。
[例外]
例外クラス名 |
説明 |
---|---|
TypeError |
引数の型に誤りがあります。 |
ValueError |
コマンド応答タイマに範囲外の値が指定されています。 |
KeyboardInterrupt |
[Ctrl+C]の入力によってコマンドが中断されました。 |
commandline.NoCommandError |
引数にコマンド文字列が設定されていません。 |
commandline.ExecuteCommandError |
コマンドの実行に失敗しました。再度インスタンスを生成後,再実行してください。 |
[詳細]
指定された運用コマンドおよびコンフィグレーションコマンドを実行します。対話式コマンドの場合は第二要素以降に指定された質疑文字列を待ち,対応する応答コマンドを実行します。
最終要素にコマンド応答のタイムアウト時間を秒単位で指定することで,指定した時間が経過した時点でコマンドを中断できます。指定がない場合はset_default_timeoutメソッドで指定した時刻(未設定時は0)で実行します。コマンド応答のタイムアウト時間に0を指定した場合は,コマンドが完了するまで無制限に待ちます。
また,コマンド実行結果を返却します。戻り値のコマンド実行結果文字列には,標準出力(stdout)と標準エラー出力(stderr)に出力される文字列を格納して返却します。
[注意事項]
-
対話式コマンドの応答用文字列を対話数以上指定した場合,余分の応答文字列は未実行のまま,正常終了します。
-
commandline.ExecuteCommandErrorの例外が発生した場合,以降のコマンド実行がすべて失敗します。復旧するためには,インスタンスの再生成が必要です。
-
execメソッドによるコマンド実行は,スクリプト専用ユーザ権限で実行されます。
-
telnetなどの外部装置と文字列を送受信する対話式コマンドは,応答文字列を指定しても,正常に動作しないことがあります。
-
タイムアウト発生時に,execメソッドは実行中のコマンドを[Ctrl+C]の入力によって中断します。[Ctrl+C]による処理の中断を許可しないコマンド(more,lessなど)は,タイムアウト発生時に正常に終了できないため,例外(commandline.ExecuteCommandError)が発生します。
-
enable password設定時のenableコマンド実行(装置管理者モードへの遷移)にはパスワードの入力は不要です。
[備考]
なし