我试图在Linux中发布一系列评论。 我做的第一步是创建一个新的屏幕;
exec('screen -dmS stresstest.session');
这没有任何问题。 在此之后,我想输出例如IP地址;
exec('screen -S stresstest.session -X stuff "ip addre $(echo -ne \'\\r\')"');
问题出在哪里; 不知何故,在第一行之后对第二行代码进行注释是不可能的。
如果我使用我的root用户制作Linux屏幕,然后使用php做几次“ip addre”,它就像一个魅力。 当我使用php创建屏幕并尝试第二行代码时,它不起作用。
这会是什么问题? 我认为这与权限有关吗?
没有错误。 看起来脚本运行正常,但php不执行第二和第三个命令。
感谢您的投入。
答案 0 :(得分:0)
屏幕窗口编号从0开始。请尝试使用-p 0
。
此外,-X
参数向screen
进程发送命令,而不是screen
控制的缓冲区。
如果在两个终端中运行这些命令:
screen -dmS test
screen -x test
(这将附加到您的新test
屏幕)screen -S test -X echo message
您会在屏幕消息缓冲区中看到“消息”(通常在控制台的最后一行显示^A w
等的输出)。
我看不到调用命令或将内容直接插入正在运行的屏幕缓冲区的方法。
我能想到的最接近的方法是确定哪个PTY与您正在运行的屏幕会话相关联,并直接回复某些内容。不确定你是如何以编程方式解决哪个是正确的: - )
内幕:
$ tty
/dev/ttys002
外屏:
$ echo message >/dev/ttys002
我认为这可能与你的意图有点太远了!你到底想要实现什么目标?
答案 1 :(得分:0)
我正在为PHP中的星号构建压力测试设备。 意思是创建一个循环并在每个新屏幕上调用一个电子邮件。 这样我想测试Asterisk可以走多远。
我解决了这个问题。 我错了,它与权限无关。
我只需要选择第一个屏幕。
-p 0
这个人为我做了。
RUN_PJSUA = 'screen -S stresstest.session -p 0 -X stuff "ip addre $(echo -ne \'\\r\')"';
谢谢!