標籤:defaults service 檢測 資訊 autossh ssh tunnel
有時候回需要到ssh tunnel,手動使用ssh 建立這些並沒有太大的問題,可是如果嘗試開機啟動,寫個shell指令碼並在rc.local裡面運行這個指令碼並不成功,原因也不得而知。
後來發現了autossh這東東,不單單能夠靜默模式建立ssh tunnel還能設定自動檢測,並自動嘗試連結的選項。
本文附件提供的指令碼,需要放置在/etc/ini.d/目錄下,並使用chmod +x 修改許可權。然後也有必要使用update-rc.d service defaults添加入開機啟動服務。
當然不要忘記修改指令碼中的配置資訊。
然後就能夠在開機時候自動建立ssh tunnel了。 enjoy it.
#! /bin/bash# For each tunnel; make a uniquely named copy of this template.## SETTINGS## autossh monitoring port (unique)MPORT=54321# the ssh tunnel to setupTUNNEL="-L 2003:localhost:2003"# remote userRUSER="socieer"# remote serverRSERVER="socieer.axxeo.de"# You must use the real autossh binary, not a wrapper.DAEMON=/usr/lib/autossh/autossh### END SETTINGSPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binNAME=`basename $0`PIDFILE=/var/run/${NAME}.pidSCRIPTNAME=/etc/init.d/${NAME}DESC="the tunnel"test -x $DAEMON || exit 0export AUTOSSH_PORT=${MPORT}export AUTOSSH_PIDFILE=${PIDFILE}ASOPT=${TUNNEL}" -f -N "${RUSER}"@"${RSERVER}# Function that starts the daemon/service.d_start() { start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $ASOPT if [ $? -gt 0 ]; then echo -n " not started (or already running)" else sleep 1 start-stop-daemon --stop --quiet --pidfile $PIDFILE --test --exec $DAEMON > /dev/null || echo -n " not started" fi}# Function that stops the daemon/service.d_stop() { start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON || echo -n " not running"}case "$1" in start) echo -n "Starting $DESC: $NAME" d_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; restart) echo -n "Restarting $DESC: $NAME" d_stop sleep 1 d_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2 exit 3 ;;esacexit 0
本文出自 “EIT流浪漢” 部落格,請務必保留此出處http://zicowarn.blog.51cto.com/3815716/1653604
使用autossh實現開機建立ssh tunnel的方法以及shell指令碼.