2017-07-20 13 views
0

私はさまざまな他のスクリプトを呼び出す複雑なシェルスクリプトを持っています。このスクリプト内のいくつかのコマンドは、sudoのパスワードを要求します。私はこれを自動化するためのラッパースクリプトを書いています。 だから、オンライン調査で、私は以下のものを見つけました:パスワードを尋ねるシェルスクリプトを自動化

  1. 、パスワードを持たないsudoerファイルを作成しますが、コマンドのリストは、この条件が適用されるために与えられたする必要がありそうです。スクリプト内のどのコマンドがsudoのパスワードプロンプトを起動しているかを検索したくないのは、時間がかかりすぎるためです。

  2. Expectユーティリティ。これはexpect interpreterで動作し、spawnがexpectインタープリタコマンドであるためスクリプトを生成できません。

#!/usr/bin/expect 
spawn sudo su 
expect "*assword" 
send "abc12\n" 
interact 

しかし、私は必要なのはこれです::だから、基本的に以下のコードで扱う期待

#!/usr/bin/expect 
spawn ./complex_script.sh <arg1> <arg2> 
expect "*assword" 
send "abc12\n" 
interact 

私はこれを実行すると、私は以下のエラーが表示されます。 は実行できませんでした"complex_script.sh":そのようなファイルまたはディレクトリ "スポーンcomplex_script.sh rootfsの" (ファイル "./a.sh" ライン2)

の実行中
  1. エコーパスワード| script.shも動作しません。

ありがとうございます。

+0

なぜrootとしてスクリプトを起動してsudoコマンドを忘れるのはなぜですか? –

+0

エラーは、生成するスクリプトが見つからないと示しています。絶対パスを使ってみましたか? – OscarAkaElvis

答えて

0

私が見る限り、コードは問題ありません。エラーメッセージ "no such file or directory"は、この行のために相対パスを使用している可能性が最も高いです。spawn ./complex_script.sh <arg1> <arg2>

完全パスを試してみてください。スクリプトは期待通りに動作するはずです。

関連する問題