在Raspberry PI上启动后运行Shell脚本

时间:2014-02-05 13:33:58

标签: linux bash shell raspberry-pi raspbian

我正在使用覆盆子pi制作一个网络信息亭显示板,我想在加载后2分钟向浏览器窗口发送一些按键。该脚本发送Web服务器的登录详细信息。

我有一个脚本可以发送从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运行的,因为当我删除sleep命令时,我从脚本中看到回声。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

它无法工作的原因是因为脚本需要以用户pi的身份运行。

我将rc.local脚本中的代码更改为:su - pi -c "bash /home/pi/logon.sh &"

这使得脚本以用户pi的形式运行,并且使用&符号通过分叉脚本使脚本与rc.local脚本分开运行。 (http://hacktux.com/bash/ampersand

答案 1 :(得分:1)

将它放在你的crontab

@reboot /path/to/script

使用

编辑它
#crontab -e