是否可以使用 php exec 并回答脚本中的问题?

Izn*_*ood 3 php linux exec

想象一下我的服务器上有一个 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() 并回答脚本中的未来问题吗?

Jus*_*ᚄᚒᚔ 6

值得注意的是,对于您的情况,更好的解决方案是使用 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)

  • 哇,没想到已经被放入 PHP 中了。+1 表示意外信息。 (3认同)