Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.25 KB | None | 0 0
  1. #!/bin/bash
  2. function usage() {
  3.     echo "Usage: $0 host [user]"
  4.     exit 1
  5. }
  6.  
  7. function normal() {
  8.     ssh $SSH_OPTS -tt $USER@$HOST screen -RdS $SCREEN_SES_NAME
  9.     return 0
  10. }
  11.  
  12. function abnormal() {
  13.     key=$(cat ~/.ssh/id_rsa.pub)
  14.     expect -f - <<-EOE
  15.         log_user 0
  16.         set prompt "~]#"
  17.         spawn ssh $USER@$HOST
  18.         expect "assword:" { send "$PASSWORD\r" }
  19.         expect \$prompt { send "mkdir -p ~/.ssh/; chmod 700 ~/.ssh/; echo $key >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys\n" }
  20.         expect \$prompt { send "exit\n" }
  21.     EOE        
  22. }              
  23.  
  24. HOST=$1
  25. USER=${2:-root}
  26. PASSWORD=root_password
  27. SCREEN_SES_NAME=I_RUN_CODE_WITHOUT_VERIFICATION
  28. SSH_OPTS="-o PasswordAuthentication=no -o KbdInteractiveAuthentication=no -o ChallengeResponseAuthentication=no -o StrictHostKeyChecking=no"
  29.  
  30. [ "$HOST" ] || usage
  31.  
  32. while :; do
  33.     skip_wait=""
  34. #cleanup known_hosts
  35.     ssh-keygen -R $HOST >& /dev/null
  36.  
  37. # probe host, copy key or run ssh depeding on result
  38.     ssh $SSH_OPTS $USER@$HOST /bin/true >& /dev/null && normal || { abnormal; skip_wait=yes; }
  39.  
  40. # wait for interrupt
  41.     [ "$skip_wait" ] && continue
  42.     for ((i=1; i>=0; i--)); do
  43.         echo "$i..."
  44.         sleep 1
  45.     done
  46. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement