# [:space:] is there for reason
SERVERSET1_UAT_SERVERS="uat-1-server1 uat-1-server2 uat-1-server3 "
SERVERSET1_PROD_SERVERS="prod-1-server1 prod-1-server2 prod-1-server3 "
SERVERSET2_UAT_SERVERS="uat-2-server1 uat-2-server2 uat-2-server3 "
SERVERSET2_PROD_SERVERS="prod-2-server1 prod-2-server2 prod-2-server3 "
if [ "$#" -lt "2" ]; then
echo -e $USAGE
exit 1
fi
connect() {
echo ################################################
echo -n "Please type in your USERNAME: "
read USERNAME
echo -n "Please type in your PASSWORD: "
read -s PASSWORD
echo ################################################
COMMANDS=$( cat $COMMANDFILE | while read line; do
line=$(echo "$line" | sed 's/'\''/\\'\''/g')
line=$(echo "$line" | sed 's/"/\\"/g')
if [ "${line:0:2}" == "IA" ]; then
echo "$line" | sed 's/\(IA\) \(.*\)/system \"\2\\n\"/'
else
echo "$line" | sed 's/\(.*\)/send -- \"\1\\n\"/'
fi
done )
for SERVER in $SERVERS; do
expect -c '
#exp_internal 1
spawn ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no '"$USERNAME"'@'"$SERVER"'
expect "password:"
send "'"$PASSWORD"'\n"
expect -re ".*\$"
sleep 1
send -- "sudo su - root\n"
expect "password for '"$USERNAME"':"
send "'"$PASSWORD"'\n"
expect -re ".*#"
'"$COMMANDS"'
interact timeout 10 return
'
done
}
case "$1" in
serverset1)
case "$2" in
all)
SERVERS=( "$SERVERSET1_UAT_SERVERS$SERVERSET1_PROD_SERVERS" )
if [ "$3" "=" "" ]; then
COMMANDFILE=.commands
else
COMMANDFILE="$3"
fi
connect
;;
uat)
SERVERS=( "$SERVERSET1_UAT_SERVERS" )
if [ "$3" "=" "" ]; then
COMMANDFILE=.commands
else
COMMANDFILE="$3"
fi
connect
;;
prod)
SERVERS=( "$SERVERSET1_PROD_SERVERS" )
if [ "$3" "=" "" ]; then
COMMANDFILE=.commands
else
COMMANDFILE="$3"
fi
connect
;;
esac
;;
serverset2)
case "$2" in
all)
SERVERS=( "$SERVERSET2_UAT_SERVERS$SERVERSET2_PROD_SERVERS" )
if [ "$3" "=" "" ]; then
COMMANDFILE=.commands
else
COMMANDFILE="$3"
fi
connect
;;
uat)
SERVERS=( "$SERVERSET2_UAT_SERVERS" )
if [ "$3" "=" "" ]; then
COMMANDFILE=.commands
else
COMMANDFILE="$3"
fi
connect
;;
prod)
SERVERS=( "$SERVERSET2_PROD_SERVERS" )
if [ "$3" "=" "" ]; then
COMMANDFILE=.commands
else
COMMANDFILE="$3"
fi
connect
;;
esac
;;
*)
echo -e "$USAGE"
;;
esac
[/code]
- Sea-you blogja
- A hozzászóláshoz be kell jelentkezni
- 1253 megtekintés
Hozzászólások
subscribe
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Ha valaki kulccsal szeretné megvalósítani, annak:
(a passhrase üres maradjon)
$ ssh-keygen
$ cat id_rsa.pub | ssh user@host 'cd .ssh; cat >> authorized_keys; chmod 600 authorized_keys'
- A hozzászóláshoz be kell jelentkezni
az alábbi egyszerűbb:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
- A hozzászóláshoz be kell jelentkezni
subscribe
- A hozzászóláshoz be kell jelentkezni
+1
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.
Slackware Linux 13.37 | 2.6.39.3-janos
- A hozzászóláshoz be kell jelentkezni
Kösz. Mindig tanul az ember.
- A hozzászóláshoz be kell jelentkezni
Köszi, ezt nem ismertem én sem. Viszont annyi a hibája, ahogy látom, hogy nem kezeli a portokat.
- A hozzászóláshoz be kell jelentkezni
A passphrase szerintem ne legyen üres egy valódi (kritikus) környezetben használt szervernél. Helyette inkább az ssh-agent + ssh-add parancsokat kellene használni.
- A hozzászóláshoz be kell jelentkezni