期望脚本在shell中运行但是通过cgi失败

时间:2013-12-13 12:40:06

标签: bash cgi expect

运行一个期望脚本,在命令行调用它时效果非常好,但是如果我通过cgi运行完全相同的命令,它会在密码后失败并出现以下错误

打开终端时出错:未知。与10.x.x.x的连接已关闭。发送:spawn id exp8在执行"发送 - " \ r""时未打开(文件" ./ precheck.exp"第24行)

网络服务器是猫鼬,它在我当前的用户下运行 知道什么可能是错的吗?

1 个答案:

答案 0 :(得分:1)

CGI脚本由没有连接TTY的守护进程(Web服务器)运行。但是,密码查询通常在附加的TTY上完成。如果一个进程实际上测试是否存在TTY,那么在用户调用的shell脚本中运行和作为CGI运行之间是否会有区别。

现在,您可以做些什么来解决您的问题?

您可以创建并将PTY附加到您正在处理的进程中,这样即使它作为CGI脚本运行,它也会找到TTY。或者您可以尝试说服相关程序从其他地方获取密码。如果可能的话,我建议尝试这种方式。只是因为这个而打入假TTY可能并不容易,我认为这是一个黑客攻击。

告诉一个程序,如果没有TTY就可以了,在这里你去吃那个密码,这对你的问题来说是一个不错的方法。