この期待値にはさらに別の問題があります。これを機能させるために日曜日に8つの方法を試しましたが、理解できないようです。基本的に、expect spawn プロセス内で「スクリプトを呼び出す」か、sudo を呼び出す方法を見つけてから、一連の Mac CLI コマンドを昇格したプロンプトとして実行したいと考えています。
実行したいコマンドは次のとおりです (管理者として実行する必要があります)。
#!/bin/bash
networksetup -setdnsservers "Ethernet" 172.xxx.xxx.xxx;
networksetup -setsearchdomains "Ethernet" "congo.test";
このファイルに「change.sh」という名前を付けました
基本的に、現在作業中のメインのインストール スクリプトを実行する前に、まずいくつかのネットワーク インターフェイスをセットアップしたいと考えています。
これは私が持っているもので、うまくいかないようですが、コマンドラインで直接呼び出すとうまくいきます:
expect -c "
set password \"foobar\"
spawn su root -c \"/bin/bash change.sh\"
expect \"Password:\"
send \"\$password\r\"
"
これで、argv を渡すことができることがわかりました。これは最終的な実行で行う可能性が高いですが、これは機能していません。実際にスクリプトを起動してネットワークの変更を実行しているようには見えません。私が実行した場合:
%> su root -c ./change.sh
これは機能します。ただし、expect スクリプトでは機能しません。
「install.sh」という別のスクリプトがあり、これは上記の次のコードで正常に機能します。
spawn su root -c \"/bin/bash install.sh\"
expect \"Password:\"
send \"\$password\r\"
"
これは完全に機能します。
2 つの質問:
- メイン スクリプト内でこれらの networksetup cli を呼び出すことはできますか? もしそうなら、なぜこの「change.sh」スクリプトを呼び出さないのでしょうか?
- 「install.sh」スクリプトの場合、スポーンはルートとして正常に起動し、うまく機能します。それらは完全に同じもののように見えます
私が遭遇しているのはばかげた問題であり、どこかで何かを修正する必要があると確信しています。