我对这个期望的东西还有另一个问题。我已经尝试了八种方法到星期天来让它工作,但似乎无法弄清楚。基本上,我想要么在期望生成过程中“调用脚本”,要么弄清楚如何调用 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
这行得通。但是,它在期望脚本中不起作用。
我有另一个脚本,称为“install.sh”,它适用于上面的以下代码:
spawn su root -c \"/bin/bash install.sh\"
expect \"Password:\"
send \"\$password\r\"
"
这完美地工作。
两个问题:
- 我可以在主脚本中调用那些networksetup cli吗?如果是这样,为什么不调用这个“change.sh”脚本?
- 对于“install.sh”脚本,spawn 以 root 身份成功触发并且效果很好,它们看起来完全一样
我确定这是我遇到的一个愚蠢的问题,需要在某个地方解决一些问题。