Commit b35ab879 authored by Vitaly Lipatov's avatar Vitaly Lipatov

improve rooter scripts

parent 23d58f4b
...@@ -32,7 +32,7 @@ if [ -z "$USERNAME" ] || [ -z "$HOST" ] || [ -z "$VEID" ]; then ...@@ -32,7 +32,7 @@ if [ -z "$USERNAME" ] || [ -z "$HOST" ] || [ -z "$VEID" ]; then
fi fi
USERKEY=$(ssh rooter@server get pubkey $USERNAME) USERKEY=$(ssh rooter@server pubkey $USERNAME)
[ -n "$USERKEY" ] || fatal "Can't get ssh key" [ -n "$USERKEY" ] || fatal "Can't get ssh key"
...@@ -44,11 +44,12 @@ SUDO= ...@@ -44,11 +44,12 @@ SUDO=
# FIXME: почему-то в cat не раскрывается тильда! # FIXME: почему-то в cat не раскрывается тильда!
#ADDKEYCMD="useradd $USERNAME ; su - $USERNAME -c 'mkdir -p ~/.ssh ; chmod 700 ~/.ssh ; touch ~/.ssh/authorized_keys ; chmod 600 ~/.ssh/authorized_keys' ; cat >> /home/$USERNAME/.ssh/authorized_keys" #ADDKEYCMD="useradd $USERNAME ; su - $USERNAME -c 'mkdir -p ~/.ssh ; chmod 700 ~/.ssh ; touch ~/.ssh/authorized_keys ; chmod 600 ~/.ssh/authorized_keys' ; cat >> /home/$USERNAME/.ssh/authorized_keys"
HSSH=/home/$USERNAME/.ssh HSSH=/home/$USERNAME/.ssh
# TODO: исправить повторное добавление ключей
ADDKEYCMD="$SUDO useradd $USERNAME ; $SUDO su - $USERNAME -c 'mkdir -p $HSSH ; chmod 700 $HSSH ; touch $HSSH/authorized_keys ; chmod 600 $HSSH/authorized_keys' ; cat >> $HSSH/authorized_keys" ADDKEYCMD="$SUDO useradd $USERNAME ; $SUDO su - $USERNAME -c 'mkdir -p $HSSH ; chmod 700 $HSSH ; touch $HSSH/authorized_keys ; chmod 600 $HSSH/authorized_keys' ; cat >> $HSSH/authorized_keys"
# copy key in host system # copy key in host system
if [ -z "$VEID" ] || [ "$VEID" = 0 ] ; then if [ -z "$VEID" ] || [ "$VEID" = 0 ] ; then
echo "Copy key for $USERNAME to $HOST" echo "Copy key for $USERNAME to host $HOST"
echo "$USERKEY" | docmd ssh $HOST "$ADDKEYCMD" echo "$USERKEY" | docmd ssh $HOST "$ADDKEYCMD"
ssh $HOST $SUDO ls /home/$USERNAME/.ssh -l ssh $HOST $SUDO ls /home/$USERNAME/.ssh -l
#ssh -i $USERKEY $USERNAME@$HOST ls ~/.ssh -l #ssh -i $USERKEY $USERNAME@$HOST ls ~/.ssh -l
......
...@@ -10,6 +10,10 @@ fatal() ...@@ -10,6 +10,10 @@ fatal()
exit 1 exit 1
} }
fastssh()
{
ssh -o "ControlMaster auto" -o "ControlPath ~/tmp/ssh_mux_%h_%p_%r" -o "ControlPersist 4h" "$@"
}
SUDO= SUDO=
[ "$UID" = 0 ] || SUDO="sudo" [ "$UID" = 0 ] || SUDO="sudo"
...@@ -19,4 +23,4 @@ shift ...@@ -19,4 +23,4 @@ shift
echo "$HOSTLIST" | grep -q -- "$HOST" || fatal "Unknown host $HOST. Call to the administrator." echo "$HOSTLIST" | grep -q -- "$HOST" || fatal "Unknown host $HOST. Call to the administrator."
ssh "root@$HOST" $SUDO iptables -L -n -t nat | grep "^DNAT" fastssh "root@$HOST" $SUDO iptables -L -n -t nat | grep "^DNAT"
...@@ -10,6 +10,33 @@ fatal() ...@@ -10,6 +10,33 @@ fatal()
exit 1 exit 1
} }
# 5 minutes cache
is_obsoleted()
{
test -z "$(find "$1" -cmin -5 2>/dev/null)"
}
get_log()
{
echo ~/tmp/vzlist.$1.cache
}
get_log_wh()
{
echo ~/tmp/vzlist.$1.wh.cache
}
print_is_not_obsoleted()
{
is_obsoleted "$1" && return 1
cat "$1"
}
fastssh()
{
ssh -o "ControlMaster auto" -o "ControlPath ~/tmp/ssh_mux_%h_%p_%r" -o "ControlPersist 4h" "$@"
}
[ "$UID" = 0 ] || fatal "Run me only as root" [ "$UID" = 0 ] || fatal "Run me only as root"
# name,description # name,description
...@@ -58,19 +85,21 @@ SUDO= ...@@ -58,19 +85,21 @@ SUDO=
if [ -n "$PRINTIP" ] ; then if [ -n "$PRINTIP" ] ; then
VEID=$(($1)) VEID=$(($1))
OPTIONS="$OPTIONS -H -oip $VEID" OPTIONS="$OPTIONS -H -oip $VEID"
ssh "root@$HOST" $SUDO vzlist $OPTIONS fastssh "root@$HOST" $SUDO vzlist $OPTIONS
exit exit
fi fi
if [ -n "$PRINTHOSTNAME" ] ; then if [ -n "$PRINTHOSTNAME" ] ; then
VEID=$(($1)) VEID=$(($1))
OPTIONS="$OPTIONS -H -ohostname $VEID" OPTIONS="$OPTIONS -H -ohostname $VEID"
ssh "root@$HOST" $SUDO vzlist $OPTIONS fastssh "root@$HOST" $SUDO vzlist $OPTIONS
exit exit
fi fi
if [ -n "$PRINTHOST" ] ; then if [ -n "$PRINTHOST" ] ; then
ssh "root@$HOST" $SUDO vzlist $OPTIONS | sed -e "s|no$| $HOST|g" -e "s| DISABL| HOST |g" print_is_not_obsoleted $(get_log_wh $HOST) && exit
fastssh "root@$HOST" $SUDO vzlist $OPTIONS | sed -e "s|no$| $HOST|g" -e "s| DISABL| HOST |g" | tee $(get_log_wh $HOST)
else else
ssh "root@$HOST" $SUDO vzlist $OPTIONS print_is_not_obsoleted $(get_log $HOST) && exit
fastssh "root@$HOST" $SUDO vzlist $OPTIONS | tee $(get_log $HOST)
fi fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment