我必须解决我公司的一个问题,即我们使用基于Raspberry(基于unix)的Raspberry Pi机器远程连接到Windows 7机器并从那里开始工作。问题是,所有易于使用,免费,基于unix的rdesktop应用程序都无法处理断开连接。他们冻结了,“不那么有才华”的员工不知道如何阻止rdesktop并重新连接。
我需要写一些东西,最好是一个bash应用程序,它可以在Raspberry的后台运行并检查连接。如果连接断开,它应该杀死rdesktop并在连接恢复时启动一个新的连接。我不知道从哪里开始,因为虽然我找到了一些例子,但他们都使用ping来检查连接,但是我的老板说所有Raspberries一直发送ping数据包会使我们的网关超载。有没有办法在没有ping的情况下检查连接?
答案 0 :(得分:0)
解决问题的一种方法是创建一个守护进程,该守护进程不断检查与主机的连接。
这样做涉及创建两个文件
/usr/local/bin/checkconnection.sh
/etc/init.d/checkconnectiond
创建守护程序文件:
$ sudo touch /etc/init.d/checkconnectiond
$ sudo nano /etc/init.d/checkconnectiond
并粘贴以下内容:
# !/bin/sh
# /etc/init.d/checkconnectiond
### BEGIN INIT INFO
# Provides: checkconnectiond
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Script for checking connection for remote desktop
# Description: Script for checking connection for remote desktop
### END INIT INFO
case "$1" in
start)
while sleep 30; do (/usr/local/bin/checkconnection.sh &) ; done
;;
stop)
killall checkconnectiond -q
;;
*)
echo "Usage: /etc/init.d/checkconnectiond {start|stop}"
exit 1
;;
esac
exit 0
创建脚本:
$ sudo nano /usr/local/bin/checkconnection.sh
剧本:
if ping -c 1 host_ip &> /dev/null
then
# do nothing, host is up
else
killall remotedesktop-pid
fi
请务必更改host_ip
和remotedesktop-pid
。您可以在使用killall
时使用流程名称,因此,如果它被称为“rdp”,您可以killall rdp
现在我们有了一个守护进程,它会在启动覆盆子时自动启动。该守护进程每隔30秒运行checkconnection.sh
。
checkconnection.sh
脚本对主机运行ping命令。如果ping不成功,它将终止远程桌面进程,因此用户必须手动重新启动它。
来源: