想象一下我的服务器上有一个 script.sh 要求输入您的姓名。您运行该脚本,它会显示:
what is your name?
Run Code Online (Sandbox Code Playgroud)
然后你输入你的名字,它会打印:
hello name!
Run Code Online (Sandbox Code Playgroud)
是否可以使用 php exec 运行这样的脚本?那就是执行脚本并以某种方式回答它可能有的不同问题?
希望我说清楚了。我真正想做的是从我们的开发服务器自动执行“git pull”命令,但它一直要求输入用户名/密码。我知道我可以使用 ssh 证书登录来避免这种情况,但我的问题仍然存在。我可以使用 exec() 并回答脚本中的未来问题吗?
值得注意的是,对于您的情况,更好的解决方案是使用 SSH 密钥进行身份验证。但是,您也许可以使用PHP Expect来实现这一点。
ini_set("expect.timeout", -1);
ini_set("expect.loguser", "Off");
$stream = expect_popen("git pull");
while (true) {
switch (expect_expectl ($stream, array (
array ("username:", USERNAME),
array ("password:", PASSWORD),
))) {
case USERNAME:
fwrite ($stream, "usename\n");
break;
case PASSWORD:
fwrite ($stream, "secret\n");
break;
case EXP_TIMEOUT:
case EXP_EOF:
break 2;
default:
die ("Error has occurred!\n");
}
}
fclose ($stream);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1234 次 |
| 最近记录: |