我的 Raspberry Pi 上运行着 Raspbian,我希望在启动时显示一个浏览器。我能够在启动时打开一个 Midori 窗口到正确的页面,但我的问题是我收到“无法解析主机名”错误,就像我没有连接到互联网时会得到的错误一样。我按照上面列出的说明进行操作http://www.niteoweb.com/blog/raspberry-pi-boot-to-browser在命令行中输入:
$ sudo nano /etc/xdg/lxsession/LXDE/autostart
注释所有内容并添加以下行:
@xset s off
@xset -dpms
@xset s noblank
@midori -e Fullscreen -a http://google.com
此进程在启动时确实会打开一个 Midori 窗口,但出现上述错误。如果刷新页面,那么它就可以工作,但我希望能够在没有鼠标或键盘的情况下调出网址。我读到在启动开始时,互联网可能还没有连接,所以我创建了一个 bash 脚本,在打开 Midori 窗口之前将进程延迟了二十秒。这也不起作用,同样的错误仍然存在。我也尝试过使用铬的过程,但也无济于事。
答案1
在我的 Pi 上,我有一个脚本,可以在执行其他操作之前检查我是否有 IP 地址:
IP.py
进口插座 从时间导入睡眠 def 检查网络(): ip = 假 尝试: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('google.com', 0)) ip = s.getsockname()[0] s.close() 除了套接字错误: 返回错误 别的: 返回ip def main(): x = 检查网络() 当 x == False 时: 打印“正在检查网络...” x = 检查网络() 睡觉(1)
这只是尝试打开某个已知地址的套接字,并且在实际获得连接之前会失败。使其可执行:
chmod +x ip.py
然后,您需要通过将其添加到 /etc/rc.local 来将其添加到启动中:
#!/bin/sh -e # # rc.local # # 该脚本在每个多用户运行级别结束时执行。 # 确保脚本在成功或任何其他情况下将“退出 0” # 错误值。 # # 要启用或禁用此脚本,只需更改执行方式 # 位。 # # 默认情况下此脚本不执行任何操作。 /usr/bin/python/directory/where/you/put/ip.py 出口0
希望有帮助
答案2
我通过不输入无线网络密钥而是使用 Ap 路由器上的按钮选项解决了这个问题。即使使用无线键盘和鼠标(通过供电的 USB 集线器),也能立即连接,不再有任何问题
答案3
使用 ifconfig 检测 ip 地址,并等待直到获得 ip 地址(即 $? == 0)(假设是 ipv4),
$ /sbin/ifconfig |grep "inet " |grep -v "127.0.0.1"
inet 10.2.3.15 netmask 255.255.255.0 broadcast 10.2.3.255
$ echo $?
0
那是,
#!/bin/bash
while [ 1 ]; do
ip=`/sbin/ifconfig |grep -v "127.0.0.1" |grep "inet "`
[[ $? == 0 ]] && break;
echo "wait for ip"; sleep 1;
done
echo "got ip: $ip"
答案4
/etc/xdg/lxsession/LXDE/自动启动:
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xscreensaver -no-splash
@midori --inactivity-reset=60 -e Fullscreen -a http://www.google.com
为我工作