Запуск сценария оболочки после загрузки на Raspberry PI

Я делаю доску для отображения веб-киоска, используя Raspberry Pi, и хочу отправить несколько нажатий клавиш в окно браузера через 2 минуты после его загрузки. Сценарий отправляет данные для входа на веб-сервер.

У меня есть сценарий, который отправляет нажатия клавиш, который отлично работает с консоли telnet:

#!/usr/bash
username="username"
password="password"
echo "Setting Display"
export DISPLAY=:0
echo "Sending Username"
for char in $(sed -E s/'(.)'/'\1 '/g <<<"$username"); do
    xdotool key $char
done
xdotool key Tab
echo "Sending Password"
for char in $(sed -E s/'(.)'/'\1 '/g <<<"$password"); do
    xdotool key $char
done
xdotool key Return
echo "Waiting 5 Seconds"
sleep 5
echo "Setting Remember Password"
xdotool key Tab
xdotool key Tab
xdotool key Return
echo "Finished"

Я пытался добавить bash /home/pi/logon.sh в файл rc.local, но он не отправляет нажатия клавиш в браузер?

Кто-нибудь знает, почему это так? Как я уже сказал - он отлично работает из окна telnet, если я запускаю скрипт, но он не работает при запуске из загрузки.

У меня было sleep 120 в строке перед тем, как он остановился, если сразу сработал, и ждал, пока браузер загрузится - и я знаю, что скрипт запускается из rc.local, потому что, когда я удаляю команду сна, я вижу эхо из скрипта.

Любые идеи?


person Blind Trevor    schedule 05.02.2014    source источник


Ответы (2)


Причина, по которой он не работал, заключалась в том, что сценарий нужно было запускать от имени пользователя pi.

Я изменил код в скрипте rc.local на этот: su - pi -c "bash /home/pi/logon.sh &"

Это заставляет скрипт запускаться от имени пользователя pi, а амперсанд используется для того, чтобы скрипт запускался отдельно от скрипта rc.local путем его разветвления. (http://hacktux.com/bash/ampersand)

person Blind Trevor    schedule 05.02.2014

Поместите это в свой crontab

@reboot /path/to/script

Отредактируйте его, используя

#crontab -e
person ihatetoregister    schedule 05.02.2014