Advertisement
Guest User

ტესტ

a guest
Oct 23rd, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.54 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. cleanup() {
  4.     ssh -S /dev/shm/real-vncviewer-over-ssh_ctl_path_$PORT -O exit root@$ADDRESS &>/dev/null
  5.     rm /dev/shm/real-vncviewer-over-ssh_error_log_$PORT &>/dev/null
  6.     kill $(jobs -pr) &>/dev/null
  7. }
  8.  
  9. ARGS=${@:1:$((${#@} - 1))}
  10.  
  11. ADDRESS=${@:${#@}}
  12.  
  13. if [ -z "$ADDRESS" ]; then
  14.     if [ -t 0 ]; then
  15.     read -p "remote address: " -t 300 ADDRESS
  16.     else
  17.     LAST=$(tail -n1 $HOME/.real-vncviewer-over-ssh_history 2>/dev/null)
  18.     HISTORY=$(tac $HOME/.real-vncviewer-over-ssh_history 2>/dev/null|tr '\n' ' '|sed 's/^[^ ]* //')
  19.     case $(lsb_release -r -s 2>/dev/null) in
  20.     12.04)
  21.     ADDRESS=$(zenity --entry --window-icon=/usr/share/pixmaps/real-vncviewer.png --title="VNC Viewer Over SSH" --text="remote address:" --entry-text="$LAST")
  22.     ;;
  23.     *)
  24.     ADDRESS=$(zenity --entry --window-icon=/usr/share/pixmaps/real-vncviewer.png --title="VNC Viewer Over SSH" --text="remote address:" --entry-text="$LAST" $HISTORY)
  25.     ;;
  26.     esac
  27.     fi
  28. fi
  29.  
  30. if [ -z "$ADDRESS" ]; then
  31.     exit
  32. fi
  33.  
  34. export HISTCONTROL=erasedups
  35. export HISTSIZE=10
  36.  
  37. history -r $HOME/.real-vncviewer-over-ssh_history
  38. history -s $ADDRESS
  39. history -w $HOME/.real-vncviewer-over-ssh_history
  40.  
  41. PORT=$((RANDOM%20000+40000))
  42.  
  43. while true; do
  44.     (echo >/dev/tcp/localhost/$PORT) &>/dev/null && PORT=$((RANDOM%20000+40000)) || break
  45. done
  46.  
  47. trap "cleanup" SIGHUP SIGINT SIGTERM EXIT
  48.  
  49. if [ -t 0 ]; then
  50.     ssh -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes -TNfL $PORT:127.0.0.1:5900 -M -S /dev/shm/real-vncviewer-over-ssh_ctl_path_$PORT root@$ADDRESS &
  51. else
  52.     while true; do echo; sleep 1; done | zenity --progress --auto-kill --pulsate --window-icon=/usr/share/pixmaps/real-vncviewer.png --title="VNC Viewer Over SSH" --text="creating ssh tunnell to root@$ADDRESS" &
  53.     ZENITY_PROGRESS_PID=$!
  54.     ssh -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes -TNfL $PORT:127.0.0.1:5900 -M -S /dev/shm/real-vncviewer-over-ssh_ctl_path_$PORT root@$ADDRESS &>/dev/shm/real-vncviewer-over-ssh_error_log_$PORT &
  55. fi
  56.  
  57. SSH_PID=$!
  58.  
  59. wait $SSH_PID
  60.  
  61. SSH_EXIT_STATUS=$?
  62.  
  63. if [ -n "$ZENITY_PROGRESS_PID" ]; then
  64.     kill $ZENITY_PROGRESS_PID
  65. fi
  66.  
  67. if [ $SSH_EXIT_STATUS -ne 0 ]; then
  68.     if ! [ -t 0 ] && [ -r /dev/shm/real-vncviewer-over-ssh_error_log_$PORT ]; then
  69.     zenity --error --window-icon=/usr/share/pixmaps/real-vncviewer.png --title="VNC Viewer Over SSH" --text="<b>remote address: $ADDRESS</b>\n\n$(</dev/shm/real-vncviewer-over-ssh_error_log_$PORT)"
  70.     fi
  71.  
  72.     exit $SSH_EXIT_STATUS
  73. fi
  74.  
  75. real-vncviewer WarnUnencrypted=0 $ARGS 127.0.0.1:$PORT
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement