обновить браузер Chrome по сценарию оболочки с помощью xdotool через PHP

Я хочу обновить браузер, например, нажать клавишу F5 или Ctrl + F5 на клавиатуре с помощью сценария оболочки.

Я новичок в написании сценариев оболочки, поэтому я предлагаю вам помочь мне в этом:

, когда я ввожу его в командную строку, обновление отлично работает:

DISPLAY=:0 xdotool getactivewindow key F5

Я написал сценарий refresh.sh с этим контентом:

export DISPLAY=:0.0
xdotool getactivewindow
xdotool key F5

Но он возвращается:

[email protected] ~ $ sudo sh /var/www/refresh.sh
No protocol specified
Error: Can't open display: (null)
Failed creating new xdo instance
No protocol specified
Error: Can't open display: (null)
Failed creating new xdo instance

может кто-нибудь дать мне подсказку?

Браузер Chromium находится в режиме киоска, вот мой

/etc/xdg/lxsession/LXDE/autostart

-

#@lxpanel --profile LXDE
#@pcmanfm --desktop --profile LXDE
#@xscreensaver -no-splash
@xset s off
@xset -dpms
@xset s noblank
@chromium --kiosk --incognito http://localhost/output/output.php?monitor=1

~~ EDIT:

Я изменил свой сценарий на

export DISPLAY=:"0.0"
XAUTHORITY=/home/pi/.Xauthority
xdotool getactivewindow
xdotool key F5

, когда я запускаю его с консоли с помощью

sh /var/www/refresh.sh

он работает!

Но теперь я хочу выполнить этот скрипт с помощью PHP с пользовательскими www-данными. Поэтому я добавил в visudo:

www-data ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: /var/www/refresh.sh

и создал PHP-файл с этим контентом:

<?php
exec("sudo sh /var/www/refresh.sh");
?>
<h1>Refreshing output</h1>

Но ничего не случилось ...

Есть ли возможность получить больше информации о возвращающихся ошибках? Я ничего не нашел в документации для команды «exec».

Также попытался:

<?php
$output = array();
$output[] = exec("sudo sh /var/www/refresh.sh");
print_r($output)
?>

, но возвращаемый массив пуст

3 голоса | спросил s3bi 6 32013vEurope/Moscow11bEurope/MoscowWed, 06 Nov 2013 21:02:40 +0400 2013, 21:02:40

1 ответ


1

Я использовал сочетание с PHP и jQuery Ajax. Я пишу параметр в Databas, если его «0», ничего не произойдет, если оно «1», страница переубеживается.

   var times = 0;

    var refreshId = window.setInterval(function(){
      // check refresh!
      $.ajax({
        type : "GET",
        url : "check.php",
        cache : false,
        success: function(data){
          var data = $.parseJSON(data);
          var refresh = data.refresh;

          if(refresh == 1){
            location.reload();
          }
...
ответил s3bi 7 42013vEurope/Moscow11bEurope/MoscowThu, 07 Nov 2013 18:12:13 +0400 2013, 18:12:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132