工作時我還有另一個與這個期望的東西有關的問題。我已經嘗試了八種方法來讓星期天工作,而且似乎無法解決這個問題。基本上,我想在預期的產卵過程中「調用腳本」,或者想出如何調用sudo,然後以提升的提示運行一組Mac CLI命令。期望spawn調用的腳本沒有運行,當相同的命令通過終端
下面是命令我要運行(他們需要以管理員身份運行):
#!/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
This Works。但是,它在期望腳本中不起作用。
我還有另外一個劇本,叫「install.sh」,這正常工作與上面下面的代碼:
spawn su root -c \"/bin/bash install.sh\"
expect \"Password:\"
send \"\$password\r\"
"
這完美的作品。
兩個問題:
- 我可以只調用主腳本中那些networksetup CLI的?如果是這樣,爲什麼不調用這個「change.sh」腳本工作?
- 對於「install.sh」腳本,產卵成功觸發的根和偉大工程,他們看起來像是完全一樣的東西
我敢肯定,這是我遇到和需要的傻問題修理某些地方的東西。
嘗試指定腳本的完整路徑:'spawn su root -c {/ bin/bash /path/to/change.sh}' –
nope,那沒有做到。 –