php ssh linux screen exec

时间:2018-05-23 07:53:18

标签: php linux ssh

我试图在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不执行第二和第三个命令。

感谢您的投入。

2 个答案:

答案 0 :(得分:0)

屏幕窗口编号从0开始。请尝试使用-p 0

此外,-X参数向screen进程发送命令,而不是screen控制的缓冲区。

如果在两个终端中运行这些命令:

  1. 1号航站楼:screen -dmS test
  2. 终端2:screen -x test(这将附加到您的新test屏幕)
  3. 1号航站楼:screen -S test -X echo message
  4. 您会在屏幕消息缓冲区中看到“消息”(通常在控制台的最后一行显示^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\')"';

谢谢!