从脚本填充命令行


0

我有一个经过很多复杂处理的PHP脚本,最后生成了一个供用户运行的命令。现在,它会打印命令,然后退出。用户必须复制该命令并将其粘贴以运行它。因为PHP命令是在命令行上运行的,所以如果PHP脚本能够将命令放在命令行上,则对用户来说将更加容易。用户只需按Enter。(是的,这是必须由人来运行命令,否则我只能从脚本内部执行命令。)

我尝试使用xclip将命令复制到剪贴板。挂了 我用exec和system来运行它。要运行的命令在$ command中,我使用了:

exec("echo \"$command\" | xclip");

使用exec和system时,它都将挂起,直到我按下ctrl-C并且剪贴板中没有任何内容。

更新我发现,如果我通过命令将xclip传递到/ dev / null,它不会挂起。然后,我可以将其添加到用户的剪贴板中,他/她可以使用ctrl + shift + v运行它

exec("echo \"$command\" | xclip -sel clip -i > /dev/null");

我尝试将整个内容包装在命令行中的复杂脚本中,拖尾输出的最后一行,然后尝试将其粘贴到命令行中。我可以得到它来打印命令,但是不能在命令行上显示。它总是打印命令,然后命令行出现在其下方。

我在命令行中使用BASH。因此,任何解决方案都必须在bash shell中工作-假设有解决方案。


您的PHP脚本不能仅提示用户“要执行此{command},请按Enter”,等待enter键,然后实际执行命令?
DavidPostill

@DavidPostill这是我的建议。它并没有(无知地)在做出决定。我说过,我想看看是否有可能做他们想做的事情。我的下一个行动计划是在PHP中编写一个伪造的bash shell,以便看起来您正在bash中运行所有内容-但随后,我将冒着一遍又一遍地在内部运行命令的风险。……
kainaw

婚介很烂时很难;)
DavidPostill

您可以使用“ -loops 1”代替“> / dev / null”。
艾耶尔

Answers:


0

不是完全按Enter键,而是更难-命令

history -s "command to put in history"

将给定的命令行添加到bash历史记录中。然后,您只需使用[向上箭头] [输入]即可检索并运行注入的命令。

(我不确定是否可以直接从PHP执行此操作,或者是否需要将PHP脚本包装到bash脚本中,但这应该可行)


这可以在命令行上运行,但是(到目前为止)还不能从PHP脚本内部进行。我确实想过如何在退出时将“向上箭头”推入STDIN-这使我在思考如何在退出时将整个字符串推入STDIN。
kainaw '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.