### ### 12. Januar 2026 ### export HISTCONTROL=ignoreboth:erasedups export HISTFILESIZE=20000 export HISTSIZE=5000 export HISTTIMEFORMAT="%F %T " export HISTIGNORE="free*:exit:clear:man*:mc*:history*:set*:export*:alias*:source*:declare*:__*" export HOMEDIR=/home/andre alias ll='ls -haltr' alias ppm="sudo perl -MCPAN -e 'shell'" alias RDPC='RDP 10.101.0.236' alias ssh_h='egrep "^# " .ssh/config' alias ßh=ssh alias TS='ts "%Y-%m-%d %H:%M:%S"' alias clear_history="history -c && history -w && clear" alias extip='echo $(curl --connect-timeout 5 -s https://ipinfo.io/ip)' alias grep='grep --line-buffered' alias egrep='egrep --line-buffered' alias sudo='sudo bash --rcfile $HOMEDIR/.bashrc' if [ -x /usr/bin/dircolors ]; then test -r $HOMEDIR/.dircolors && eval "$(dircolors -b $HOMEDIR/.dircolors)" || eval "$(dircolors -b)" export GREP_COLORS='1;37;41' alias ls='ls --color=auto' alias ll='ls -haltr --color=auto' alias grep='grep --line-buffered --color=auto' alias grepv='grep --line-buffered -v grep | grep --line-buffered --color=auto' alias egrep='egrep --line-buffered --color=auto' alias egrepv='grep --line-buffered -v grep | egrep --line-buffered --color=auto' fi export SSHUSER=ageissler export SSHPASS=G0ttAmH3rd export GPGKEY=13FAA6FC export EDITOR=vi # export PERL_MB_OPT="--install_base \"$HOMEDIR/perl5\"" # export PERL_MM_OPT="INSTALL_BASE=$HOMEDIR/perl5" export PERL_MM_USE_DEFAULT=1 export PATH=$PATH:.:~:/install/:$HOMEDIR/scripts/:$HOMEDIR/bin/: export PROMPT_DIRTRIM=10 color_prompt=yes # $- Options set for shell if echo "$-" | grep i > /dev/null; then ip=`extip` fi # \n grün username@hostname dflt :blau workingdir dflt \n ip \n RET: grün oder rot je nach ret, ret gelb zeit dflt blau $ dflt #PS1='\e[7\e[2A\e[16C $? \e[8 \n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\r\u@\h\[\033[00m\]:\[\033[01;34m\]\w \[\033[00m\] \n $ip \n RET:\[\033[01;$(($?==0?32:91))m\]$? \[\033[01;33m\]\t\[\033[00m\] \[\033[01;34m\]\$\[\033[00m\] ' #export PS1="\nTime \e[0;32m\A\e[0m Date \e[0;32m\d\e[0m Rev \e[0;31m$(cd /home/rancid/var/rancid/network/configs ; svn info | grep Revision | awk '{print $2}')\e[0m \n\e[0;33m\u\e[0m@\e[1;32m\h\e[0m:\e[0;34m\w\e[0m \n\$ " PSCHR=$(printf "%s '" ' ^ ° ! " $ % / ( ) [ ] { } = ? \ ` # + ~ < > | @ , ; . : - _ *') PS1='\n$PSCHR\n${debian_chroot:+($debian_chroot)}\[\033[01;15m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n \[\033[01;33m\]$ip\[\033[00m\]\n \[\033[01;15m\]RET:\[\033[01;$(($?==0?32:91))m\]$? \[\033[01;33m\]\t\[\033[00m\] \[\033[01;34m\]\$\[\033[00m\] ' shopt -s histappend shopt -s histverify shopt -s autocd shopt -s cdspell shopt -s cmdhist shopt -s dotglob shopt -s interactive_comments shopt -s expand_aliases shopt -s extglob cy-ssh() { set -euo pipefail if [ $# -lt 1 ]; then echo "Usage: $0 [ssh-options...]" return 1 fi HOST="$1" shift || true # Defaults SSH_HOSTNAME="finance" SSH_PROXY="" ############################################################################### # Gemeinsame CyberArk-Auth-Optionen ############################################################################### CYBERARK_USER="ageissler@ageissler@${HOST}" CYBERARK_AUTH_OPTS="-o PreferredAuthentications=publickey,keyboard-interactive,password" ############################################################################### # Host conlx* ############################################################################### if [[ "$HOST" == conlx* ]]; then CYBERARK_USER="ageissler@root@${HOST}" fi ############################################################################### # Host switch-catalyst-* switch-nexus-* switch-fibre-* router-* ############################################################################### if [[ "$HOST" == switch-catalyst-* \ || "$HOST" == switch-nexus-* \ || "$HOST" == switch-fibre-* \ || "$HOST" == router-* ]]; then SSH_HOSTNAME="finance" fi ############################################################################### # Host switch-admin-* ############################################################################### if [[ "$HOST" == switch-admin-* ]]; then SSH_HOSTNAME="admin" fi ############################################################################### # Host router-swx-* ############################################################################### if [[ "$HOST" == router-swx-* ]]; then SSH_HOSTNAME="admin" fi # Prüfe ob Hostname auflösbar ist if ! getent hosts "$SSH_HOSTNAME" ; then # Versuche alternativen Hostname SSH_HOSTNAME="finance.conadm.de" if ! getent hosts "$SSH_HOSTNAME"; then echo " ! cy-ssh Fehler: \"finance\" und \"finance.conadm.de\" nicht auflösbar" >&2 return 1 fi fi SSH_USER="$CYBERARK_USER" SSH_AUTH_OPTS="$CYBERARK_AUTH_OPTS" ############################################################################### # SSH-Command bauen ############################################################################### CMD=(ssh) if [ -n "$SSH_USER" ]; then CMD+=(-l "$SSH_USER") fi CMD+=(-o ForwardX11=no -o ForwardX11Trusted=no) CMD+=(-o HostName="$SSH_HOSTNAME") if [ -n "$SSH_PROXY" ]; then CMD+=(-o ProxyCommand="$SSH_PROXY") fi if [ -n "$SSH_AUTH_OPTS" ]; then CMD+=($SSH_AUTH_OPTS) fi CMD+=("$SSH_HOSTNAME" "$@") ############################################################################### # Optional Debug ############################################################################### echo "DEBUG: ${CMD[*]}" >&2 "${CMD[@]}" local exit_code=$? if [ $exit_code -ne 0 ]; then echo " ! cy-ssh Fehler: SSH-Verbindung fehlgeschlagen." fi return $exit_code } RDP() { if [ "$1" == "" ] then echo 'call with RDP ' else xfreerdp /cert:ignore '/u:conacc\ageissler' '/p:FranziskaR439!' /dynamic-resolution /v:$1 & fi } prompt_confirm() { while true; do read -r -n 1 -p "${1:-Weiter?} [j/n]: " REPLY case $REPLY in [jJ]) echo ; return 0 ;; [nN]) echo ; return 1 ;; *) printf " \033[31m %s \n\033[0m" "ungültige Eingabe" esac done } # prompt_confirm "Overwrite File?" || return 0 conv_owi() { IMG=$1 PNG=${IMG}.png exiftool $IMG -Artist=vkue -Copyright=vkue MAXMB=$2 if [ "$MAXMB" == "" ] then MAXMB=10 fi MAXSIZE=$(expr $MAXMB \* 1000 \* 1000) if [ -f $PNG ] then SIZE=$(stat --printf="%s" $PNG) fi if [ ! -f $PNG ] || [[ $SIZE -gt $MAXSIZE ]] then RATE=100 RDIFF=1 SIZE=$(expr $MAXSIZE + 1) while [[ $SIZE -gt $MAXSIZE ]] do RATE=$(expr $RATE - $RDIFF) convert -resize ${RATE}% $IMG $PNG SIZE=$(stat --printf="%s" $PNG) echo RATE $RATE MAX $MAXSIZE SIZE $SIZE FAK=$(expr $SIZE \* 100 / $MAXSIZE) echo $FAK if [[ $FAK -gt 101 ]]; then RDIFF=2; fi if [[ $FAK -gt 106 ]]; then RDIFF=4; fi if [[ $FAK -gt 111 ]]; then RDIFF=8; fi if [[ $FAK -gt 120 ]]; then RDIFF=12; fi if [[ $FAK -gt 140 ]]; then RDIFF=17; fi if [[ $FAK -gt 160 ]]; then RDIFF=23; fi if [[ $FAK -gt 180 ]]; then RDIFF=30; fi if [[ $FAK -gt 200 ]]; then RDIFF=38; fi if [[ $FAK -gt 220 ]]; then RDIFF=47; fi done fi } arg_h() { echo " Aliases" cat $HOMEDIR/.bashrc | egrep "alias " | grep -v "#alias" | awk -F'=' '{print $1}' | awk '{print $2}' | sort | uniq | tr "\n" " " echo " Funktionen" cat $HOMEDIR/.bashrc | grep "() {" | grep -v cat | tr -d "{" | sort | uniq | tr -d "\n" echo " wetter zeigt Wettervorhersagen an wi startet vi und erstellt zuvor Sicherungsdatei install_ssh_keypair_files speichert Schlüsselpaar in $HOMEDIR/.ssh/id_ed25519[.pub] install_ssh_authorized_key [|user] hängt pub-key an [~]|[/home/user]/.ssh/authorized_keys an ssh_env 1. versucht zunächst key basierte anmeldung einzurichten 2. copy der bash aufs zielsystem $HOMEDIR/.bash_profile 3. ssh per key 4. bei erfolg wird beim anmelden die zuvor angelegte datei ausgeführt und durch einen rm am Ende dieses bashrc gelöscht " } 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" Insta360Pictures() { for instafile in `ls | egrep -i "^[0-9a-z]+_[0-9]+\.[0-9]+_[0-9]+\.jp[e]*g"` do timestamp=$(echo "$instafile" | sed 's/.*_\([0-9]*\)\.jpg/\1/') timestamp_sec=$(($timestamp / 1000)) # Datum formatieren und in EXIF schreiben #exiftool -overwrite_original -DateTimeOriginal="$(date -d @${timestamp_sec} '+%Y:%m:%d %H:%M:%S')" $instafile mv $instafile I${timestamp}.jpg done } AddGPSToPicture() { J=$1 # höhe des bildes ermitteln H=$(exiftool -csv -ImageHeight $J | grep -v Height | awk -F',' '{print $2}') # 2% der Bildhöhe für die Schrift FS=$(bc -l <<< "$H*2/100" | awk -F. '{print $1}') FS2=$(bc -l <<< "$FS+25" | awk -F. '{print $1}') POSITION=$(exiftool -m -p '$GPSPosition' "$J" -c \"%+.5f\") if [ -z "$POSITION" ]; then echo Position fehlt return fi exiftool -overwrite_original -exif:gpslatituderef=N -exif:gpslongituderef=E "$J" convert $J -gravity North -pointsize $FS -font Courier-10-Pitch-Regular -fill white -undercolor black -annotate +0+$FS2 "Position $POSITION" $J; } AddGPSToPictures() { for file in "$@"; do AddGPSToPicture $file done } AddTimestampToPicture() { J=$1 # höhe des bildes ermitteln H=$(exiftool -csv -ImageHeight $J | grep -v Height | awk -F',' '{print $2}') # 2% der Bildhöhe für die Schrift FS=$(bc -l <<< "$H*2/100" | awk -F. '{print $1}') # datetime string aus bild holen DATETIME=$(exiftool -m -p '$FileModifyDate' "$J" || exiftool -m -p '$ModifyDate' "$J" ) DATETIMEORIG=$(exiftool -m -p '$DateTimeOriginal' "$J") DATETIMECREATE=$(exiftool -m -p '$CreateDate' "$J") DATETIMEFILEMOD=$(exiftool -m -p '$FileModifyDate' "$J") DATETIMEMOD=$(exiftool -m -p '$ModifyDate' "$J") DATETIME=$DATETIMECREATE DATE=$(echo $DATETIME | awk -F' ' '{print $1}') TIME=$(echo $DATETIME | awk -F' ' '{print $2}') # date weiter aufspalten nach year, month und day YEAR=$(echo $DATE | awk -F':' '{print $1}') MONTH=$(echo $DATE | awk -F':' '{print $2}') DAY=$(echo $DATE | awk -F':' '{print $3}') # month durch monatsnamen ersetzen if [ "$MONTH" == "01" ]; then MONTH="Januar"; fi if [ "$MONTH" == "02" ]; then MONTH="Februar"; fi if [ "$MONTH" == "03" ]; then MONTH="März"; fi if [ "$MONTH" == "04" ]; then MONTH="April"; fi if [ "$MONTH" == "05" ]; then MONTH="Mai"; fi if [ "$MONTH" == "06" ]; then MONTH="Juni"; fi if [ "$MONTH" == "07" ]; then MONTH="Juli"; fi if [ "$MONTH" == "08" ]; then MONTH="August"; fi if [ "$MONTH" == "09" ]; then MONTH="September"; fi if [ "$MONTH" == "10" ]; then MONTH="Oktober"; fi if [ "$MONTH" == "11" ]; then MONTH="November"; fi if [ "$MONTH" == "12" ]; then MONTH="Dezember"; fi convert $J -gravity North -pointsize $FS -font Courier-10-Pitch-Regular -fill white -undercolor black -annotate +0+0 "Datum $DAY. $MONTH $YEAR Zeit $TIME" $J; } AddTimestampToPictures() { for file in "$@"; do AddTimestampToPicture $file done } AddTimeDateToPicturesMenu() { LOG="/var/log/AddTimeDateToPicturesMenu.log" date > $LOG echo $@ >> $LOG D=$(perl -e '$s=$ARGV[0];@a=$s=~/([a-z0-9-._\/ ]*?)([a-z0-9-._]*) +\//i; $s=~s/$a[0]//g; print "$a[0]"; ' "$@") cd "$D" P=$(pwd) echo "P $P" >> $LOG F=$(perl -e '$s=$ARGV[0];@a=$s=~/([a-z0-9-._\/ ]*?)([a-z0-9-._]*) +\//i; $s=~s/$a[0]//g; print "$s"; ' "$@") echo "F $F" >> $LOG for J in `echo $F`; do # höhe des bildes ermitteln H=$(exiftool -csv -ImageHeight $J | grep -v Height | awk -F',' '{print $2}') # 2% der Bildhöhe für die Schrift FS=$(bc -l <<< "$H*2/100" | awk -F. '{print $1}') # datetime string aus bild holen DATETIME=$(exiftool -m -p '$FileModifyDate' "$J" || exiftool -m -p '$ModifyDate' "$J" ) DATETIMEORIG=$(exiftool -m -p '$DateTimeOriginal' "$J") DATETIMECREATE=$(exiftool -m -p '$CreateDate' "$J") DATETIMEFILEMOD=$(exiftool -m -p '$FileModifyDate' "$J") DATETIMEMOD=$(exiftool -m -p '$ModifyDate' "$J") DATETIME=$DATETIMEMOD echo "$J $H $DATETIME" >> $LOG POSITION=$(exiftool -m -p '$GPSPosition' "$J" -c \"%+.6f\") if [ -z "$POSITION" ]; then echo Position fehlt return fi echo "$J $POSITION" >> $LOG exiftool -overwrite_original -exif:gpslatituderef=N -exif:gpslongituderef=E "$J" # aufspalten nach date und time DATE=$(echo $DATETIME | awk -F' ' '{print $1}') TIME=$(echo $DATETIME | awk -F' ' '{print $2}') # date weiter aufspalten nach year, month und day YEAR=$(echo $DATE | awk -F':' '{print $1}') MONTH=$(echo $DATE | awk -F':' '{print $2}') DAY=$(echo $DATE | awk -F':' '{print $3}') # month durch monatsnamen ersetzen if [ "$MONTH" == "01" ]; then MONTH="Januar"; fi if [ "$MONTH" == "02" ]; then MONTH="Februar"; fi if [ "$MONTH" == "03" ]; then MONTH="März"; fi if [ "$MONTH" == "04" ]; then MONTH="April"; fi if [ "$MONTH" == "05" ]; then MONTH="Mai"; fi if [ "$MONTH" == "06" ]; then MONTH="Juni"; fi if [ "$MONTH" == "07" ]; then MONTH="Juli"; fi if [ "$MONTH" == "08" ]; then MONTH="August"; fi if [ "$MONTH" == "09" ]; then MONTH="September"; fi if [ "$MONTH" == "10" ]; then MONTH="Oktober"; fi if [ "$MONTH" == "11" ]; then MONTH="November"; fi if [ "$MONTH" == "12" ]; then MONTH="Dezember"; fi # zusammengesetzer datums-, zeitstring in bild einfügen (mittig oben) convert $J -gravity North -pointsize $FS -font Courier-10-Pitch-Regular -fill white -undercolor black -annotate +0+0 "Datum $DAY. $MONTH $YEAR Zeit $TIME" $J; FS2=$(bc -l <<< "$FS+25" | awk -F. '{print $1}') convert $J -gravity North -pointsize $FS -font Courier-10-Pitch-Regular -fill white -undercolor black -annotate +0+$FS2 "Position $POSITION" $J; done } 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 }' } 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 # Kommentare als weitere Parameter in der Regel einfÃgen -m comment --comment "Kommentar" # Logging, ACCEPT o DROP als Regel dahinter definieren iptables .... -j LOG " echo "Beispielkonfig *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [13057:10612758] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 10.0.0.0/8 -i eth0 -j ACCEPT -A INPUT -s 192.168.0.0/16 -i eth0 -j ACCEPT -A INPUT -s 172.16.0.0/12 -i eth0 -j ACCEPT -A INPUT -s 195.20.133.0/24 -i eth1 -j ACCEPT -A INPUT -s 149.13.94.0/24 -i eth1 -j ACCEPT -A INPUT -s 92.50.110.208/29 -i eth1 -j ACCEPT -A INPUT -s 127.0.0.0/8 -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -j LOG -A INPUT -j DROP COMMIT " } delete_files_older() { if [ "$4" == "" ]; then echo "" echo "$0 " 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 } 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 on ssh client" 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 on ssh server" 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 on ssh server" 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 "" } logrotate() { if [ "$1" == "" ] then echo "" echo "Aufruf:" echo "" echo "logrotate " 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 } e1ping() { while (( "$#" )) do ping -W 1 -O -i 1 -c 1 $1 >/dev/null RV=$? if [ $RV -eq 0 ] then echo -n -e "\e[42;30m$1 is up\e[m " else echo -n -e "\e[41m$1 is down\e[m" fi echo -n " " shift done echo } eping() { P="" while (( "$#" )) do P="$P $1" shift done echo "" I=0 date while [ 1 ] do if [ "$I" == "10" ] then I=0 date fi e1ping $P sleep 1 I=`expr $I + 1` done } find_local_port() { N=$(($RANDOM + 10000)) echo $N } find_local_ip() { I=$(($RANDOM % 250)) echo $I } find_session_id() { S=`date +"%s"` echo $S } update_git() { echo "Gehe durch Unterverzeichnisse für git pulls" for DIR in `ls` do echo echo "########## $DIR" cd $DIR git pull cd .. done } pw() { printf "\n B_uchstaben S_onderzeichen W_orte Z_iffern\n" B='a b c d e f g h j k m n p q r s t u v w x y z A B C D E F G H J K L M N P Q R S T U V W X Y Z' Z='1 2 3 4 5 6 7 8 9' S='! - _ + / \ # $ % & ( ) [ ] { }' echo -n " " ; echo B: $B echo -n " " ; echo Z: $Z echo -n " " ; echo S: $S for I in `echo $B` do echo $I >> alphabet done for I in `echo $S` do echo $I >> zeichen done for I in `echo $Z` do echo $I >> ziffern done #Generiere PW in der Form xxxxx-xxxxx-xxxxx-xxxxx curl -k -s https://pw.andregeissler.de/duden1 > duden1 curl -k -s https://pw.andregeissler.de/duden2 > duden2 C=1 DC1=`cat duden1 | wc -l` DC1=`expr $DC1 + 1` DC2=`cat duden2 | wc -l` DC2=`expr $DC2 + 1` for I in `echo 4 9` do printf "\n%2d) %2d W : " $C $I for J in `seq 2 $I` do NR=`echo $(($RANDOM % $DC1 + 1))` B=`cat duden1 | head -n $NR | tail -n 1` echo -n $B"-" done NR=`echo $(($RANDOM % $DC1 + 1))` B=`cat duden1 | head -n $NR | tail -n 1` echo -n $B C=`expr $C + 1` done echo for I in `echo 4 9` do printf "\n%2d) %2d W : " $C $I for J in `seq 2 $I` do NR=`echo $(($RANDOM % $DC2 + 1))` B=`cat duden2 | head -n $NR | tail -n 1` echo -n $B"-" done NR=`echo $(($RANDOM % $DC2 + 1))` B=`cat duden2 | head -n $NR | tail -n 1` echo -n $B C=`expr $C + 1` done cat alphabet > menge1 ; cat alphabet > menge2 ; cat alphabet > menge3 cat ziffern >> menge2 ; cat ziffern >> menge3 cat zeichen >> menge3 AC=`cat menge1 | wc -l` BC=`cat menge2 | wc -l` CC=`cat menge3 | wc -l` echo "" # alphabet 47, zeichen 15, ziffern 9 for I in `echo 12 16 30` do printf "\n%2d) %2d B : " $C $I for J in `seq 1 $I` do # buchstaben AC=47 NR=`echo $(($RANDOM % $AC + 1))` B=`cat menge1 | head -n $NR | tail -n 1` echo -n "$B" done C=`expr $C + 1` printf "\n%2d) %2d BZ : " $C $I for J in `seq 1 $I` do # buchstaben, ziffern BC=56 NR=`echo $(($RANDOM % $BC + 1))` B=`cat menge2 | head -n $NR | tail -n 1` echo -n "$B" done C=`expr $C + 1` printf "\n%2d) %2d BZS : " $C $I for J in `seq 1 $I` do # buchstaben, ziffern, zeichen CC=71 NR=`echo $(($RANDOM % $CC + 1))` B=`cat menge3 | head -n $NR | tail -n 1` echo -n "$B" done C=`expr $C + 1` echo done rm duden1 rm duden2 rm menge1 rm menge2 rm menge3 rm alphabet rm zeichen rm ziffern } rotate() { file=$1 if [ "$file" == "" ] then echo "rotate " echo "" return fi echo "Rotiere $file nach $file.1" echo " $file.1 nach $file.2" echo " ..." echo " $file.8 nach $file.9" echo "Lâsche $file.9" if [ -f $file ] then if [ -f $file.9 ] ; then rm $file.9 ; fi if [ -f $file.8 ] ; then mv $file.8 $file.9 ; fi if [ -f $file.7 ] ; then mv $file.7 $file.8 ; fi if [ -f $file.6 ] ; then mv $file.6 $file.7 ; fi if [ -f $file.5 ] ; then mv $file.5 $file.6 ; fi if [ -f $file.4 ] ; then mv $file.4 $file.5 ; fi if [ -f $file.3 ] ; then mv $file.3 $file.4 ; fi if [ -f $file.2 ] ; then mv $file.2 $file.3 ; fi if [ -f $file.1 ] ; then mv $file.1 $file.2 ; fi mv $file $file.1 touch $file fi } wetter() { c=$1 curl wttr.in/$c } wi() { f=$1 d=$(date "+%Y-%m-%d") rotate $f.bu.$d > /dev/null 2>&1 cp $1 $f.bu.$d vi -c ":syntax on" -c "set number" $f } ssh_env() { u=$1 s=$2 ssh-copy-id -oStrictHostKeyChecking=no -i $HOMEDIR/.ssh/id_ed25519 $u@$s > /dev/null 2>&1 scp $HOMEDIR/.bashrc $u@$s:$HOMEDIR/.bash_profile ssh -q -X -oStrictHostKeyChecking=no $u@$s } crossword() { grep -hi "^$1\$" /usr/share/dict/* | sort | uniq } install_ssh_keypair_files() { mkdir $HOMEDIR/.ssh/ echo "-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW QyNTUxOQAAACAZREl5zjYh3/3Gs1WXI7Yt4spiWHMCbx3PK+jnexG+hwAAAKDS7Hi00ux4 tAAAAAtzc2gtZWQyNTUxOQAAACAZREl5zjYh3/3Gs1WXI7Yt4spiWHMCbx3PK+jnexG+hw AAAECdSCzE3tYW7sk3s8P6BQSvf8c52Jtz8n3bC963bJtj9hlESXnONiHf/cazVZcjti3i ymJYcwJvHc8r6Od7Eb6HAAAAGGFnZWlzc2xlci50dXguMjIxMjE0MTAwMgECAwQF -----END OPENSSH PRIVATE KEY-----" > $HOMEDIR/.ssh/id_ed25519 chmod 0600 $HOMEDIR/.ssh/id_ed25519 echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBlESXnONiHf/cazVZcjti3iymJYcwJvHc8r6Od7Eb6H ageissler.tux.2212141002" > $HOMEDIR/.ssh/id_ed25519.pub chmod 0600 $HOMEDIR/.ssh/id_ed25519.pub echo "-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn NhAAAAAwEAAQAAAQEAv4M/JiHEJgMTlW2owW9Jzu41iNPU13x5+pDYOhP+N20s7tdKqt4W rUz7rl4GlOmPyjJBhdJ7ep7Lnz9z/btRawrauY9e+c9xgkI5OjG+UDjvYiizvX0FdPHeo9 wu2BnNfukmZUynUXsnwcu5UAH3lDLrxU+CnrzBMc8s7wLYEPGbSx8BFFgVuRf9GCBmcq+n DDXtPUU9lk2CSG0Ak831blmzj8Nkhc73eJbO05yytxFOJI7o58wbEzgCS5G2lhVZuovluj Nzfk7ra7aA3FtdkPQiuXkLVcEKzFktSWwACBpHtUynos4A7eRLlpOJOWKL17+sK3Fk/Umo YHig1bQi8QAAA8hfST8CX0k/AgAAAAdzc2gtcnNhAAABAQC/gz8mIcQmAxOVbajBb0nO7j WI09TXfHn6kNg6E/43bSzu10qq3hatTPuuXgaU6Y/KMkGF0nt6nsufP3P9u1FrCtq5j175 z3GCQjk6Mb5QOO9iKLO9fQV08d6j3C7YGc1+6SZlTKdReyfBy7lQAfeUMuvFT4KevMExzy zvAtgQ8ZtLHwEUWBW5F/0YIGZyr6cMNe09RT2WTYJIbQCTzfVuWbOPw2SFzvd4ls7TnLK3 EU4kjujnzBsTOAJLkbaWFVm6i+W6M3N+TutrtoDcW12Q9CK5eQtVwQrMWS1JbAAIGke1TK eizgDt5EuWk4k5YovXv6wrcWT9SahgeKDVtCLxAAAAAwEAAQAAAQBGdpLYg9n4pm8hLrzF lx3P/kNCObZ5Jnp2364/CDYjzI6Yvivh3F75mnaLvFqtlZXrLjx/cWcvQZfn2t/hfndBbD f3yDGItnOsGpOVvtGoEJq7QgCH+qT0Vz20ioHNzwiV5lDTOrXhO+/v1PY04tRl+apX6Z5E q2xl2DVPJ3u6F5ewzcKbuVYjo7AovAJ/1PeLXrPyPWroqjl1hNgcdMtG2vLAsGRz4f4HHH mSk2kz8TVjzu8+n9rY533p1IJ82rbZiEeyxwhev304FWq6QPP+2meFP9jf767uMfpt6fwh mgUiNCK25531DShsZ67lIGUj4DVivjL3AoZR8xYP6G81AAAAgQDeTh1Qrr31cLjajTgpe8 P0pLPiQJMnQq8eWNZpFOe2AUsXlowURy11VKUIqx6lB6vW2ZZwHjOhr2/k7d06JHCKDS7+ WRsXjcTEf2cFC4aUhPP1R9m2l3CyIl4cxQq4WBZ7ZHovn+Hh9hEPlppje7IjAqNSsSUYUS ozssh1eqNXbgAAAIEA8FIwQxekEsUXNaHA5FJT4XmIPq0pWmqNHzVOgqzetj40lcvatgF5 3TmOFAQdNsJTBvZaFqqhAY4c7nZxtLvnml2MT8hhoZMF1ToNHTg7dhsv3wkA7pQxqwx5/8 S++8TK0GuFhIat+MsiAHWTLvQv6pPbsFU5/ZtbjUXu93wyIRMAAACBAMwB3fah8Rc7M0jq 7otanizTxEVUvJG6vwQh56kb2V5iM0MInlebGblxNrwzZq+c8F/oFGhwEwQb0QnnCp8yva udFwOoIdCrLECMaAOCtOrObBwy7wSQH3RTbxn8Fn4tvFfD0FJKOtch+NuwtSbIC5buqrF/ 0oGKMagDiaaZmHBrAAAAEmNvbmV0YWRtQGNvbmx4YW5zMQ== -----END OPENSSH PRIVATE KEY-----" > $HOMEDIR/.ssh/ansible_id_rsa chmod 0600 $HOMEDIR/.ssh/ansible_id_rsa echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/gz8mIcQmAxOVbajBb0nO7jWI09TXfHn6kNg6E/43bSzu10qq3hatTPuuXgaU6Y/KMkGF0nt6nsufP3P9u1FrCtq5j175z3GCQjk6Mb5QOO9iKLO9fQV08d6j3C7YGc1+6SZlTKdReyfBy7lQAfeUMuvFT4KevMExzyzvAtgQ8ZtLHwEUWBW5F/0YIGZyr6cMNe09RT2WTYJIbQCTzfVuWbOPw2SFzvd4ls7TnLK3EU4kjujnzBsTOAJLkbaWFVm6i+W6M3N+TutrtoDcW12Q9CK5eQtVwQrMWS1JbAAIGke1TKeizgDt5EuWk4k5YovXv6wrcWT9SahgeKDVtCLx ansible" > $HOMEDIR/.ssh/ansible_id_rsa.pub chmod 0600 $HOMEDIR/.ssh/ansible_id_rsa.pub } install_ssh_authorized_key() { if [ "$1" == "" ] then echo "Installiert ssh-ed25519 in $HOMEDIR/.ssh/authorized_keys" prompt_confirm "Weiter?" || return 0 echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBlESXnONiHf/cazVZcjti3iymJYcwJvHc8r6Od7Eb6H ageissler.tux.2212141002" >> $HOMEDIR/.ssh/authorized_keys else echo "Installiert ssh-ed25519 in /home/$1/.ssh/authorized_keys" prompt_confirm "Weiter?" || return 0 echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBlESXnONiHf/cazVZcjti3iymJYcwJvHc8r6Od7Eb6H ageissler.tux.2212141002" >> /home/$1/.ssh/authorized_keys fi } PATH="$HOMEDIR/perl5/bin${PATH:+:${PATH}}"; export PATH; PERL5LIB="$HOMEDIR/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB; PERL_LOCAL_LIB_ROOT="$HOMEDIR/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT; PERL_MB_OPT="--install_base \"$HOMEDIR/perl5\""; export PERL_MB_OPT; PERL_MM_OPT="INSTALL_BASE=$HOMEDIR/perl5"; export PERL_MM_OPT; rm -f $HOMEDIR/.bash_profile HOSTNAME=`hostname` if [ "$HOSTNAME" != "server" ] then ### bash completion module #source <(curl --connect-timeout 3 -f -s -k https://tools.andregeissler.de/completion/clogin-completion.bash) #source <(curl --connect-timeout 3 -f -s -k https://tools.andregeissler.de/completion/owi2-completion.bash) ### bash module #source <(curl --connect-timeout 3 -f -s -k https://tools.andregeissler.de/modules/arg_ssh.bash) #source <(curl --connect-timeout 3 -f -s -k https://tools.andregeissler.de/modules/gps_tools.bash) for i in `ls /etc/bash_completion.d/*.bash` do source $i done for i in `ls $HOMEDIR/bash_extensions/*.bash` do bash $i done if [ "$OS" == "" ]; then if [ ! -f $HOMEDIR/bike.jpg ]; then timeout 3 scp -o ConnectTimeout=2 -P 2222 andregeissler@vesta.agserver.de:$HOMEDIR/web/tools.andregeissler.de/public_html/bike.jpg $HOMEDIR/bike.jpg fi if [ ! -f $HOMEDIR/ascii-image-converter ]; then timeout 3 scp -o ConnectTimeout=2 -P 2222 andregeissler@vesta.agserver.de:$HOMEDIR/web/tools.andregeissler.de/public_html/ascii-image-converter $HOMEDIR/ascii-image-converter fi if echo "$-" | grep i > /dev/null; then echo ; $HOMEDIR/ascii-image-converter -C $HOMEDIR/bike.jpg -d 80,23 | tr "@" " " ; echo fi fi fi