2016-09-15 5 views
0

ラスベガス(Unix)ベースのRaspberry Piマシンを使用して、Windows 7マシンにリモート接続してそこから作業するという私の会社の問題を解決する必要があります。問題は、使い易く使いやすいすべてのUNIXベースのrdesktopアプリケーションが切断を処理できないことです。彼らは凍結し、「才能のあまりない」従業員はrdesktopを停止して再接続する方法を知らない。バックグラウンドで実行され、接続をチェックするbashファイルを書きますか?

ラズベリーのバックグラウンドで実行して接続をチェックできるbashアプリケーションが必要です。接続が切断されている場合は、rdesktopを終了し、接続が復旧すると新しいデスクトップを起動する必要があります。私はいくつかの例を見つけたが、接続を確認するためにpingを使用していたので、私はどこから始めなければならないのか分からないが、上司はいつもpingパケットを送信しているすべてのラスベリーがゲートウェイに過負荷をかけると述べた。 pingなしで接続をチェックする方法はありますか?

+1

この小さなpatcがほしいと思うように聞こえる大きな問題にならないようにしてください。私は、このような問題が発生する混乱をクリーンアップする代わりに発生しないことを確認する方法を見つけることをお勧めしたいと思います。 – x13

+0

さて、あなたは正しいです。しかし、私たちが接続を修正しても、時にはそれが起こります。 – Drake

+1

@ThisNameBetterBeAvailableに同意します。ただし、bashスクリプトを使用して高速なソリューションが必要な場合は、定期的にpingを実行します –

答えて

0

解決する1つの方法は、ホストマシンへの接続を継続的にチェックするデーモンを作成することです。

この方法は、デーモンファイルがデーモンファイル作成 /etc/init.d/checkconnectiondホストにpingを実行するスクリプト

/usr/local/bin/checkconnection.sh

  • を二つのファイル

    • を作成する必要がそれをやって:
      $ 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_ipremotedesktop-pidを変更することを忘れないでください。 killallを使用している場合はプロセス名を使用できますので、 "rdp"とすれば可能ですkillall rdp

      ラズベリーの起動時に自動的に起動するデーモンがあります。このデーモンは、30秒ごとにcheckconnection.shを実行します。 checkconnection.shスクリプトは、ホストに対してpingコマンドを実行します。 pingが成功しなかった場合、リモートデスクトッププロセスが終了し、ユーザーは手動で再起動する必要があります。

      出典:

  • 関連する問題