#VERSION 58
#DATUM 05.02.2019

# source <(curl https://andre:mesh-assort2@config.andregeissler.de/bashrc1)
# curl https://andre:mesh-assort2@config.andregeissler.de/bashrc1 > ~/.bashrc

# apt-get install iproute2 dnsutils curl
# source <(curl https://andre:mesh-assort2@config.andregeissler.de/bashrc1)

alias ll='ls -haltr'
alias ppm="sudo perl -MCPAN -e 'shell'"
alias upall='apt-get update -y ; apt-get upgrade -y --allow-unauthenticated ; apt-get autoremove -y'
alias nst='netstat -an | grep -i listen'
alias iptables_s='iptables -nvL'
alias sud='sudo -E -H bash'
alias snmp3A='snmpwalk  -v3 -a SHA -A K01v1kk0!                       -u fote98   -l authnopriv $1 $2'
alias snmp3AP='snmpwalk -v3 -a SHA -A K01v1kk0!  -x AES -X K01v1kk0   -u fote98   -l authpriv   $1 $2'
alias snmp3a='snmpwalk  -v3 -a SHA -A AuthPass01                      -u SNMPUser -l authnopriv $1 $2'
alias snmp3ap='snmpwalk -v3 -a SHA -A AuthPass01 -x AES -X PrivPass01 -u SNMPUser -l authpriv   $1 $2'
alias grepv='grep -v grep | grep'
alias update_bashrc='curl -s -H "Cache-Control: no-cache" https://andre:mesh-assort2@config.andregeissler.de/bashrc1 > ~/.bashrc'
alias assh='ssh -X -l andre $1'
alias cssh='ssh -X -l conetadm $1'
alias rssh='ssh -X -l rancid $1'
alias r11='rssh 10.101.0.11'

alias ovn='sudo openvpn --script-security 2 --config /home/andre/Nextcloud/client.ovpn'

if [ -x /usr/bin/dircolors ]; then
   test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
   alias ls='ls --color=auto'
   alias grep='grep --color=auto'
   alias fgrep='fgrep --color=auto'
   alias egrep='egrep --color=auto'
fi

export SSHK="ssh-dss AAAAB3NzaC1kc3MAAACBAMNkMHw/xuJcU3Vhg7qHynpwMFo4Lx6D/0OA1dkhLiENtW4GZTjKT2Vt+kmt9t2tpNUrZnFVPbVbTKDDkFCrc9tXM74SkE9xBxssZ4fUyQVmWMzIkMcgw6cqgNODwJOmtFdxg7KNCi5Xi2YGol8yexxzcKNd4uv3KxeyjdOsc2wZAAAAFQDiWmZgli+aNmpYDWn43KRNyK4qSQAAAIEAiBz9Jj2TfRqAQRTEUahUkSRVU9gms1g9MWmGArIH51fi71raZc7iApybSSEgV93VySaRZ+jq7W4j23JNF9WHDQn1oqPAqw+3pNtgdeQb7i4Ic7oEJ6gYxrXuvhweiJKceC9o84yv41bLSw5QELIQ9tr/JKaa7/lHDVYgWiPhWeEAAACBAK0b5iNzqitsSs3+H/QkOPYrdSNPb68wbImxD+Zber7nHYMjxpwxCAORarxNL6Gfaxz0Ghs/T0IhO9cQ9inY8QWe9kS3ZVxfuZrTvR0ZVnstePo1AsQ6cPCJ9BUVsIGfOF8PNwXf16EUDaulTjBm1DHiLuNdcVU81MfZg914/z67 andre@debian"
export SSHKE="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVlToAoVM6DH3UU/duHc31IknfvFoOsV7DPEh+xnP2XY70l70I+RNiXEWYJ6wgBmlml2txhNG9BPLmZLN/8sfR0W7nM+1nc+Qx0FQcj/3mEWQhhAXcRwbBucCGlbIr4viBnSVYPN6JI4yS5VG4xQXGjD2ZyA9/v8ubx+Cv7lQyG66XcE8nUzENyUP4ntcvdou9O7mRStAzihJo/I7P+PnvMokz2kiP+pehll7zO/b5gliEzhQq/Bsavj5FlQwMhOmZXxR9rafJ08R1SAAE2U2Gus6nmD+iR0rqv8/ugHCKkMCX+DFxJP6iTRbuStl8WZf8utxym83YnM3wqGeeUdMP andre@debian"

export GPGKEY=13FAA6FC

export EDITOR=vi
# export PERL_MB_OPT="--install_base \"/home/andre/perl5\""
# export PERL_MM_OPT="INSTALL_BASE=/home/andre/perl5"
export PERL_MM_USE_DEFAULT=1
export PATH=$PATH:.:~:/install/:/opt/Oracle_Java/jre1.7.0_79/bin:/home/andre/scripts/:
export SSH_PERS_ENV_FILES=".bashrc"
export PROMPT_DIRTRIM=2

color_prompt=yes
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \n\[\033[01;33m\]\t \[\033[01;34m\]\$\[\033[00m\] '

export HISTCONTROL="ignorespace"
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="%F %T "

shopt -s histappend
shopt -s cmdhist
shopt -s dotglob
shopt -s expand_aliases

arg_help() {
 echo "Aliases
ll ppm sb upall nst iptables_s sud snmp3A snmp3AP snmp3a snmp3ap grepv update_bashrc
assh cssh rssh

Funktionen
arg_help sshcl(clogin) sshh(hop) sshl(local) sshll(list local) asdm asdmns svncom screen_h sudo_h iptables_h
init.d_h install_ssh_key delete_files_older update_ssh_personal_environment
ssh_personal_config install_ssh_personal_config logrotate cping eping mount_all rdp
setjava setjava6|7|8 sysinfo
"
}

C_BLACK="\e[38;5;0m"
C_RED="\e[38;5;1m"
C_GREEN="\e[38;5;2m"
C_YELLOW="\e[38;5;3m"
C_BLUE="\e[38;5;4m"
C_PURPLE="\e[38;5;5m"
C_CYAN="\e[38;5;6m"
C_LIGHTGRAY="\e[38;5;7m"
C_GRAY="\e[38;5;8m"
C_PEACH="\e[38;5;9m"
C_LIGHTGREEN="\e[38;5;10m"
C_LIGHTYELLOW="\e[38;5;11m"
C_LIGHTBLUE="\e[38;5;12m"
C_PINK="\e[38;5;13m"
C_LIGHTCYAN="\e[38;5;14m"
C_WHITE="\e[38;5;15m"
C_NO="\e[0;00m"

BG_BLACK="\e[48;5;0m"
BG_RED="\e[48;5;1m"
BG_GREEN="\e[48;5;2m"
BG_YELLOW="\e[48;5;3m"
BG_BLUE="\e[48;5;4m"
BG_PURPLE="\e[48;5;5m"
BG_CYAN="\e[48;5;6m"
BG_LIGHTGRAY="\e[48;5;7m"
BG_GRAY="\e[48;5;8m"
BG_PEACH="\e[48;5;9m"
BG_LIGHTGREEN="\e[48;5;10m"
BG_LIGHTYELLOW="\e[48;5;11m"
BG_LIGHTBLUE="\e[48;5;12m"
BG_PINK="\e[48;5;13m"
BG_LIGHTCYAN="\e[48;5;14m"
BG_WHITE="\e[48;5;15m"
BG_NO="\e[0;00m"

sysinfo() {
 if [ "$USER" != "root" ]; then
  echo -e $C_RED$BG_WHITE"Not root"$C_NO
  return
 fi
 export LANG=us_US
 echo -e $C_LIGHTGREEN"Release"$C_NO
 echo -en $C_CYAN" Distributor "$C_NO; lsb_release -ad 2>&1 | grep -v modules | grep "Distributor" | awk -F: '{print $2}' | sed 's/[^A-Za-z0-9]//i' 2>&1
 echo -en $C_CYAN" Description "$C_NO; lsb_release -ad 2>&1 | grep -v modules | grep "Description" | awk -F: '{print $2}' | sed 's/[^A-Za-z0-9]//i' 2>&1
 echo -en $C_CYAN" Release "$C_NO; lsb_release -ad 2>&1 | grep -v modules | grep "Release" | awk -F: '{print $2}' | sed 's/[^A-Za-z0-9]//i' 2>&1
 echo -en $C_CYAN" Codename "$C_NO; lsb_release -ad 2>&1 | grep -v modules | grep "Codename" | awk -F: '{print $2}' | sed 's/[^A-Za-z0-9]//i' 2>&1

 echo ""
 echo -e $C_LIGHTGREEN"CPU Info"$C_NO
 echo -en $C_CYAN" Architecture "$C_NO; lscpu | grep "Architecture:" | awk -F: '{print $2}' | sed 's/[^A-Za-z0-9]//i'
 echo -en $C_CYAN" CPUs "$C_NO; lscpu | grep -v NUMA | grep "CPU(s):" | awk -F: '{print $2}' | sed 's/[0-9]*$//i'
 echo -en $C_CYAN" Threads "$C_NO; lscpu | grep "Thread(s)" | awk -F: '{print $2}' | sed 's/[0-9]$//i'
 echo -en $C_CYAN" Cores "$C_NO; lscpu | grep "Core(s)" | awk -F: '{print $2}' | sed 's/[0-9]$//i'
 echo -en $C_CYAN" Model "$C_NO; lscpu | grep "Model name:" | awk -F: '{print $2}' | sed 's/[^A-Za-z0-9]//i'
 MIN=$(lscpu | grep "CPU min")
 MAX=$(lscpu | grep "CPU max")
 MHZ=$(lscpu | grep "CPU MHz")
 echo -en $C_CYAN" CPU Speed (min/max/now) "$C_NO; echo "$MIN/$MAX/$MHZ"
 echo -en $C_CYAN" Bogo "$C_NO; lscpu | grep "Bogo" | awk -F: '{print $2}' | sed 's/[^A-Za-z0-9]//i'

 echo ""
 echo -e $C_LIGHTGREEN"System Info"$C_NO
 dmidecode | grep Base -A 10 | grep Manufact
 dmidecode | grep Base -A 10 | grep Product
 dmidecode | grep Base -A 10 | grep Version
 dmidecode | grep Base -A 10 | grep Serial

 echo ""
 echo -e $C_LIGHTGREEN"Memory Info"$C_NO
 echo -n "total "; free -m | grep Mem | awk '{ print $2 }'
 echo -n "used "; free -m | grep Mem | awk '{ print $3 }'
 echo -n "free "; free -m | grep Mem | awk '{ print $4 }'
 echo -n "shared "; free -m | grep Mem | awk '{ print $5 }'
 echo -n "buff/cache "; free -m | grep Mem | awk '{ print $6 }'
 echo -n "avail "; free -m | grep Mem | awk '{ print $7 }'

 echo ""
 echo -e $C_LIGHTGREEN"Swap Info"$C_NO
 echo -n "total "; free -m | grep Swap | awk '{ print $2 }'
 echo -n "used "; free -m | grep Swap | awk '{ print $3 }'
 echo -n "free "; free -m | grep Swap | awk '{ print $4 }'
}

rdp() {
   OUTPUT=$(zenity --forms --title="Remote Desktop" --text="Connection Settings" \
   --add-entry="Server" \
   --add-entry="User" \
   --add-password="Password" \
   --add-entry="Domain")

   ip=$(awk -F'|' '{print $1}' <<<$OUTPUT)
   us=$(awk -F'|' '{print $2}' <<<$OUTPUT)
   pa=$(awk -F'|' '{print $3}' <<<$OUTPUT)
   do=$(awk -F'|' '{print $4}' <<<$OUTPUT)

   if [ "$ip" == "" ] || [ "$us" == "" ] || [ "$pa" == "" ] || [ "$do" == "" ]
   then
      echo Angaben unvollständig!
   else
      rdesktop -D -a24 -g 1680x950 -u $us -d $do -p $pa $ip &
   fi
   ip=
   us=
   pa=
   do=
   OUTPUT=
}

setjava6() {
   setjava 6
}

setjava7() {
   setjava 7
}

setjava8() {
   setjava 8
}

setjava() {
   export J=$1
   export P=`update-alternatives --list java | grep oracle | grep java-$J`
   sudo update-alternatives --set java $P

   export P=`update-alternatives --list javaws | grep oracle | grep java-$J`
   sudo update-alternatives --set javaws $P
}

pptail() {
# PortProblemTail
tail -f $1 | grep -E "LINK-3-UPDOWN|PORT-5-IF_DOWN_LINK_FAILURE|LINEPROTO-5-UPDOWN|PORT-5-IF_UP|CANNOT_BUNDLE|SNMP-4-HIGHCPU|Excessive Broadcast|Excessive CRC|Duplex Mismatch|Excessive late|Excessive link state|High collision|Excessive undersized|Excessive jabbering"
}

sshcl() {
# ssh clogin
   ENV=$1
   HOSTNAME=$2
   COMMAND=$3
   if [ "$1" == "ksa" ]; then
      IP=10.140.8.100
      PAT="/var/lib/rancid/bin"
   fi
   if [ "$1" == "flw" ]; then
      IP=10.140.8.100
      PAT="/var/lib/rancid/bin"
   fi
   if [ "$1" == "con" ]; then
      IP=10.101.0.11
      PAT="/home/rancid/bin"
   fi

   if [ "$3" != "" ]; then
      ssh -l rancid $IP "$PAT/clogin -c \"$3\" $2"
   else
      ssh -l rancid $IP "$PAT/clogin $2"
   fi
}

sshh() {
# ssh hops
   HOPS=""
   HOPS=$@
   append=""
   comd=""
   for h in $HOPS
   do
      append="ssh -A -X -t $h "
      comd=$comd$append
      append=""
   done
   echo $comd
   $comd
}

sshl() {
# ssh local
   if [ "$1" == "home" ]; then
      echo ""
      echo "ssh           127.0.0.1:822  -> ssh://debian1:22/"
      echo "observium     127.0.0.1:880  -> http://debian1:80/"
      echo "ssh           127.0.0.1:1322 -> ssh://omv3:22/"
      echo "omv3          127.0.0.1:1380 -> http://omv3:80/"
      echo "pyLoad        127.0.0.1:1388 -> http://omv3:8888/"
      echo "asa           127.0.0.1:2443 -> https://asa:443/"
      echo "phpvboxweb    127.0.0.1:580  -> http://server:80/phpvirtualbox"
      echo ""

      sudo ssh -L 822:192.168.100.8:22 -L 880:192.168.100.8:80 -L 1322:192.168.100.13:22 -L 1380:192.168.100.13:80 -L 1388:192.168.100.13:8888 -L 2443:192.168.100.2:443 -L 580:192.168.100.5:80 andre@vpn-andregeissler.ddns.net -p 54321
   elif [ "$5" == "" ]; then
      echo sshl LOKALER_PORT REMOTE_HOST REMOTE_PORT PROXYUSER PROXYSERVER
      echo "Beispiel:"
      echo "   sshl 2222 192.168.100.13 8888 andre vpn-andregeissler.ddns.net"
      echo "   ermöglicht connect auf localhost:2222 um vom user andre auf "
      echo "   vpn-andregeissler.ddns.net auf 192.168.100.13:8888"
      echo "   getunnelt zu werden"
   elif [ "$6" == "" ]; then
      echo kein Port angegeben
      ssh -L $1:$2:$3 $4@$5
   else
      echo Port angegeben
      ssh -L $1:$2:$3 S4@S% -p $6
   fi
}

sshll() {
# listet die per ssh tunnel geöffneten lokalen ports auf
   sudo lsof -i -n | grep ssh | grep 127.0.0.1 | grep LISTEN
}

asdm() {
   echo "https://$1" >> /home/andre/.java/deployment/security/exception.sites
   javaws "https://$1/admin/public/asdm.jnlp" &
}

asdmns() {
   echo "Ermittele IP von Host $1 über DNS Server $2"
   IP=`nslookup $1 $2 | tail -n2 | grep Address | cut -d':' -f2 | tr -d [:blank:]`
   if [ "$IP" != "" ]; then
      echo "IP ist $IP"
      javaws "https://$IP/admin/public/asdm.jnlp" &
   else
      echo "IP ist unbekannt!"
   fi
}

svncom() {
   if [ "$1" == "" ]; then
      echo "Keine Datei angegeben"
      return
   fi
   COMMIT=`cat $1 | grep "#SVN:"`
   if [ "$COMMIT" == "" ]; then
      echo "Geben Sie einen Kommentar ein:"
      read INPUT
      if [ "$INPUT" == "" ]; then
         COMMIT="add #SVN: somewhere to your file to use this line as commit message."
      else
         COMMIT="#SVN:$INPUT"
      fi
   fi
   echo "Übertrage mit Kommentar '$COMMIT'"
   svn commit -m "$COMMIT" $1
}

screen_h() {
   echo "
   Ctrl+a c(reate)
   Ctrl+a n(ext)
   Ctrl+a 0-9
   Ctrl+a A (rename)
   Ctrl+a d(etach)
   Ctrl+a \" (liste)
   Ctrl+a K(ill)
   screen -r(eattach)
   # Scrollen, Markieren, Einfügen
   Ctrl+a [ wechselt in den Copy Mode
   Mit den Pfeil-, Maustasten scrollen
   Mit Enter Anfang der Markierung setzen, mit zweitem Enter das Ende setzen
   Ctrl+a ] fügt markierten Bereich ein
   "
}

sudo_h() {
   echo "
   /etc/sudoers
   andre   ALL=(ALL) NOPASSWD: ALL
   "
}

iptables_h() {
   echo "
   # Policy für Chain setzen
   iptables -P INPUT ACCEPT
   iptables -P INPUT DROP

   #Neue Chain anlegen
   iptables -N NEW_CHAIN

   # NEW_CHAIN an INPUT anhängen (-A) / am Anfang von INPUT einfügen (-I)
   iptables -A/-I INPUT -j NEW_CHAIN

   # Regeln an neue Chain anhängen (-A) / am Anfang einfügen (-I) oder löschen (-D)
   iptables -A/-I/-D NEW_CHAIN -p tcp --dport 22 -j ACCEPT
   iptables -A/-I/-D NEW_CHAIN -p udp --dport 53 -j ACCEPT
   iptables -A/-I/-D NEW_CHAIN -s 10.0.0.0/8     -j DROP
   iptables -A/-I/-D NEW_CHAIN -d 127.0.0.0/8    -j ACCEPT
   iptables -A/-I/-D NEW_CHAIN -m state --state ESTABLISHED,RELATED -j ACCEPT

   # Rücksprung aus Chain (nicht zwingend notwendig)
   iptables -A NEW_CHAIN -j RETURN

   #Chain aus Chain entfernen
   iptables -D INPUT -j NEW_CHAIN

   #Chain leeren (-F) / löschen (-X)
   iptables -F NEW_CHAIN
   "
}

init.d_h() {
   echo "
   #!/bin/bash
   ### BEGIN INIT INFO
   # Provides:
   # Required-Start:    $local_fs $remote_fs $network
   # Required-Stop:     $local_fs $remote_fs $network
   # Should-Start:
   # Should-Stop:
   # Default-Start:     2 3 4 5
   # Default-Stop:      0 1 6
   # Short-Description:
   ### END INIT INFO

   ACTION=$1
   PIDDIR=\"/var/run\"
   PIDFILE=\"provides\"
   VAR=\"\"

   function funktion {
      if [ \"$1\" == \"START\" ]; then
      fi
      if [ \"$1\" == \"STOP\" ]; then
   fi
   }

   case  $ACTION  in
   start)
      funktion START
      ;;
   stop)
      funktion STOP
      ;;
   reload)
      funktion STOP
      funktion START
      ;;
   status)
      if [ -f $PIDDIR/$PIDFILE.pid ]; then
         echo \"aktiv\"
         exit
      fi
      echo \"nicht aktiv\"
      ;;
   esac
   "
}

install_ssh_key() {
   echo $SSHK  >  /tmp/KEYFILE
   echo $SSHKE >> /tmp/KEYFILE
   scp /tmp/KEYFILE root@$1:/home/$USER/.ssh/authorized_keys
   rm /tmp/KEYFILE
}

delete_files_older() {
   if [ "$4" == "" ]; then
      echo ""
      echo "$0 <Pfad> <Tage> <d|f> <r|n>"
      echo ""
      echo "Pfad gibt an aus welchem Verzeichnis gelöscht werden soll"
      echo "Tage gibt an ab welchem Alter Verzeichnisse und Dateien gelöscht werden"
      echo "d Verzeichnisse löschen, f Dateien löschen"
      echo "r rekursiv löschen, n nicht rekursiv löschen. Bei Dateilöschungen ist egal was hier angegeben wird"
      echo ""
   else
      echo "Wechsle in Verzeichnis $1"
      cd $1
      for I in `find $1 -mtime +$2`
      do
         if [ $3 == "f" ]; then
            if [ -f $I ]; then
               echo "Lösche Datei $I"
               rm $I
            fi
         elif [ $3 == "d" ]; then
            if [ $4 == "r" ]; then
               if [ -d $I ]; then
                  echo "Lösche Verzeichnis $I rekursiv"
                  rm -fR $I
               fi
            elif [ $4 == "n" ]; then
               if [ -d $I ]; then
                  echo "Lösche Verzeichnis $I (nicht rekursiv)"
                  rmdir $I
               fi
            fi
         fi
      done
   fi
}

delete_old_logs() {
    find /var/log -name "*.gz" -o -name "*.1" -o -name "*.2" -o -name "*.old" | xargs rm
    find /var/log -mtime +7 | xargs rm
}

update_ssh_personal_environment() {
   if [ $# -gt 0 -a "$1" = "--debug" ] ; then
      export SSH_PERS_ENV_DEBUG=1
      shift
   fi
   if test -n "$SSH_PERS_ENV_FILES" -o "$#" -gt 0  ; then
      export SSH_PERS_ENV_FILES=$(
      eval echo $@ $SSH_PERS_ENV_FILES | \
      tr " " "\n" | \
      sort -u | \
      tr "\n" " "
      ) # pattern expansion
      test "${SSH_PERS_ENV_DEBUG:-}" && \
      echo "Packing as SSH Personal Environment: $SSH_PERS_ENV_FILES" 1>&2
      export SSH_PERS_ENV_DATA=$(tar -C ~ -cz $SSH_PERS_ENV_FILES | base64)
   fi
}

ssh_personal_config() {
   echo "append to /etc/ssh/ssh_config"
   echo "# this content comes from the ssh-personal-environment package"
   echo "SendEnv SSH_PERS_ENV_DATA SSH_PERS_ENV_FILES SSH_PERS_ENV_DEBUG"
   echo "# end of content from the ssh-personal-environment package"
   echo ""
   echo "append to /etc/ssh/sshd_config"
   echo "# this content comes from the ssh-personal-environment package"
   echo "AcceptEnv SSH_PERS_ENV_DATA SSH_PERS_ENV_FILES SSH_PERS_ENV_DEBUG"
   echo "# end of content from the ssh-personal-environment package"
   echo ""
   echo "insert into /etc/ssh/sshrc"
   echo "#!/bin/sh"
   echo "if which xauth >/dev/null 2>&1 && read proto cookie && test \"\$DISPLAY\" ; then"
   echo "        if test \"\$(expr substr \"\$DISPLAY\" 1 10)\" = localhost: ; then"
   echo "                  # X11UseLocalhost=yes"
   echo "                echo add unix:\"\$(expr substr \"\$DISPLAY\" 11 99)\" \$proto \$cookie"
   echo "        else"
   echo "                # X11UseLocalhost=no"
   echo "                echo add \"\$DISPLAY\" \$proto \$cookie"
   echo "        fi | xauth -q -"
   echo "fi"
   echo "# unpack personal environment"
   echo "if test \"\$SSH_PERS_ENV_DATA\" ; then"
   echo "  if [ ! \"\$USER\" = \"root\" ] ; then"
   echo "    test \"\$SSH_PERS_ENV_DEBUG\" && echo \"Unpacking SSH Personal Environment Data...\""
   echo "    echo \"\$SSH_PERS_ENV_DATA\" | base64 -d | tar \${SSH_PERS_ENV_DEBUG:+-v} -xzC ~"
   echo "  fi"
   echo "fi"
   echo ""
}

install_ssh_personal_config() {
   #echo "append to /etc/ssh/ssh_config"
   echo "# this content comes from the ssh-personal-environment package" >> /etc/ssh/ssh_config
   echo "SendEnv SSH_PERS_ENV_DATA SSH_PERS_ENV_FILES SSH_PERS_ENV_DEBUG" >> /etc/ssh/ssh_config
   echo "# end of content from the ssh-personal-environment package" >> /etc/ssh/ssh_config

   #echo "append to /etc/ssh/sshd_config"
   echo "# this content comes from the ssh-personal-environment package" >> /etc/ssh/sshd_config
   echo "AcceptEnv SSH_PERS_ENV_DATA SSH_PERS_ENV_FILES SSH_PERS_ENV_DEBUG" >> /etc/ssh/sshd_config
   echo "# end of content from the ssh-personal-environment package" >> /etc/ssh/sshd_config

   #echo "insert into /etc/ssh/sshrc"
   echo "#!/bin/sh" > /etc/ssh/sshrc
   echo "if which xauth >/dev/null 2>&1 && read proto cookie && test \"\$DISPLAY\" ; then" >> /etc/ssh/sshrc
   echo "        if test \"\$(expr substr \"\$DISPLAY\" 1 10)\" = localhost: ; then" >> /etc/ssh/sshrc
   echo "                  # X11UseLocalhost=yes" >> /etc/ssh/sshrc
   echo "                echo add unix:\"\$(expr substr \"\$DISPLAY\" 11 99)\" \$proto \$cookie" >> /etc/ssh/sshrc
   echo "        else" >> /etc/ssh/sshrc
   echo "                # X11UseLocalhost=no" >> /etc/ssh/sshrc
   echo "                echo add \"\$DISPLAY\" \$proto \$cookie" >> /etc/ssh/sshrc
   echo "        fi | xauth -q -" >> /etc/ssh/sshrc
   echo "fi" >> /etc/ssh/sshrc
   echo "# unpack personal environment" >> /etc/ssh/sshrc
   echo "if test \"\$SSH_PERS_ENV_DATA\" ; then" >> /etc/ssh/sshrc
   echo "  if [ ! \"\$USER\" = \"root\" ] ; then" >> /etc/ssh/sshrc
   echo "    test \"\$SSH_PERS_ENV_DEBUG\" && echo \"Unpacking SSH Personal Environment Data...\"" >> /etc/ssh/sshrc
   echo "    echo \"\$SSH_PERS_ENV_DATA\" | base64 -d | tar \${SSH_PERS_ENV_DEBUG:+-v} -xzC ~" >> /etc/ssh/sshrc
   echo "  fi" >> /etc/ssh/sshrc
   echo "fi" >> /etc/ssh/sshrc
   chmod +x /etc/ssh/sshrc
   /etc/init.d/ssh restart
}

logrotate() {
   if [ "$1" == "" ]
   then
      echo ""
      echo "Aufruf:"
      echo ""
      echo "logrotate <DIR>"
      echo ""
      return
   fi

   logdir=$1
   oldlogdir=$logdir/rotate
   echo $oldlogdir
   mkdir $oldlogdir
   date=`date +"%Y-%m-%d_%H-%M"`
   # alte logfiles packen
   pushd .
   cd $logdir
   tar -cvzf $date.tar.gz *.log
   # archiv verschieben
   mv $date.tar.gz $oldlogdir
   # alte logs löschen
   rm *.log
   popd
}

cping() {
   if [ "$1" == "" ]
   then
      echo ""
      echo "Aufruf:"
      echo ""
      echo "[RET=x] cping <IP>"
      echo ""
      echo "x: Anzahl Wiederholungen, E für endlos"
      echo ""
      return
   fi

   if [ "$RET" == "" ]
   then
      RET=1
   elif [ "$RET" == "E" ]
   then
      RET=2
      END=1
   fi
   echo ""

   for ((i=0; i < $RET; i++))
   do
      ping -c1 -W1 $1 >/dev/null
      RV=$?
      if [ $RV -eq 0 ]
      then
         echo -e "\e[42;30m$1 is up\e[0m"
      else
         echo -e "\e[41m$1 is down\e[m"
      fi
      sleep 1;
      if [ "$END" == "1" ]
      then
         i=$i-1
      fi
   done
   echo ""
}

eping() {
   if [ "$1" == "" ]
      then
         echo ""
         echo "Aufruf:"
         echo ""
         echo "[RET=x] eping <IP1> [IP2 [IP3 [IP4 [IP5 [IP6]]]]]"
         echo ""
         echo "x: Anzahl Wiederholungen, E für endlos"
         echo "pingt bis zu 6 Adressen an und zeigt das Ergebnis in einer Tabelle"
         echo ""
         return
   fi

   if [ "$RET" == "" ]
      then
      RET=1
   elif [ "$RET" == "E" ]
      then
      RET=2
      END=1
   fi

   CT=0
   for ((i=0; i < $RET; i++))
      do
      N=$(($CT % 5))
      if [ "$(($CT % 20))" == "0" ]
         then
         echo ""
         date
         if [ "$1" != "" ]
            then
            echo -e "$1\t\c"
         fi

         if [ "$2" != "" ]
            then
            echo -e "$2\t\c"
         fi

         if [ "$3" != "" ]
            then
            echo -e "$3\t\c"
         fi

         if [ "$4" != "" ]
            then
            echo -e "$4\t\c"
         fi

         if [ "$5" != "" ]
            then
            echo -e "$5\t\c"
         fi

         if [ "$6" != "" ]
            then
            echo -e "$6\t\c"
         fi

         echo ""
      fi
      CT=$(($CT+1))

      if [ "$1" != "" ]
         then
         ping -c1 -W1 $1 >/dev/null
         RV1=$?
      fi

      if [ "$2" != "" ]
         then
         ping -c1 -W1 $2 >/dev/null
         RV2=$?
      fi

      if [ "$3" != "" ]
         then
         ping -c1 -W1 $3 >/dev/null
         RV3=$?
      fi

      if [ "$4" != "" ]
         then
         ping -c1 -W1 $4 >/dev/null
         RV4=$?
      fi

      if [ "$5" != "" ]
         then
         ping -c1 -W1 $5 >/dev/null
         RV5=$?
      fi

      if [ "$6" != "" ]
         then
         ping -c1 -W1 $6 >/dev/null
         RV6=$?
      fi

      if [ "$1" != "" ]
         then
         if [ $RV1 -eq 0 ]
            then
            echo -e "\e[42;30mup\e[0m\t\t\c"
         else
            echo -e "\e[41mdown\e[m\t\t\c"
         fi
      fi

      if [ "$2" != "" ]
         then
         if [ $RV2 -eq 0 ]
            then
            echo -e "\e[42;30mup\e[0m\t\t\c"
         else
            echo -e "\e[41mdown\e[m\t\t\c"
         fi
      fi

      if [ "$3" != "" ]
         then
         if [ $RV3 -eq 0 ]
            then
            echo -e "\e[42;30mup\e[0m\t\t\c"
         else
            echo -e "\e[41mdown\e[m\t\t\c"
         fi
      fi

      if [ "$4" != "" ]
         then
         if [ $RV4 -eq 0 ]
            then
            echo -e "\e[42;30mup\e[0m\t\t\c"
         else
            echo -e "\e[41mdown\e[m\t\t\c"
         fi
      fi

      if [ "$5" != "" ]
         then
         if [ $RV5 -eq 0 ]
            then
            echo -e "\e[42;30mup\e[0m\t\t\c"
         else
            echo -e "\e[41mdown\e[m\t\t\c"
         fi
      fi

      if [ "$6" != "" ]
         then
         if [ $RV6 -eq 0 ]
            then
            echo -e "\e[42;30mup\e[0m\t\t\c"
         else
            echo -e "\e[41mdown\e[m\t\t\c"
         fi
      fi

      sleep 1;
      if [ "$END" == "1" ]
         then
         i=$i-1
      fi
      echo ""
   done
   echo ""
}

mount_all() {
   mkdir -p ~/mnt-homes
   mkdir -p ~/mnt-alle
   sudo mount //192.168.100.13/homes ~/mnt-homes/ -o user=andre
   sudo mount //192.168.100.13/alle ~/mnt-alle/ -o user=andre

   #sudo umount /mnt/hidrive

   #sudo mkdir -p /mnt/hidrive
   #sudo chown $USER:$USER -R /mnt/

   #ID=`id -u`
   #sudo mount -t cifs //10.1.1.4/data/ /mnt/idefix/ -ouid=$ID,gid=$ID,username=ageissler,domain=conacc,password=K01v1kk0!
   #sudo mount -t cifs //dlink/1TB /mnt/dlink/ -ouid=$ID,gid=$ID,username=root,password=K01v1kk0!
   #sudo mount -t cifs //dlink/User /mnt/dlink2/ -ouid=$ID,gid=$ID,username=root,password=K01v1kk0!
}

mkdir -p ~/.ssh/
touch ~/.ssh/authorized_keys
if [[ -f ~/.ssh/authorized_keys ]] ; then
   cat ~/.ssh/authorized_keys | grep "$SSHK" > /dev/null 2>&1
   if [[ $? == "1" ]] ; then
      echo "$SSHK" >> ~/.ssh/authorized_keys
   fi
   cat ~/.ssh/authorized_keys | grep "$SSHKE" > /dev/null 2>&1
   if [[ $? == "1" ]] ; then
      echo "$SSHKE" >> ~/.ssh/authorized_keys
   fi
fi

