From 769e31945f91654019b1a7040980f665f52ae41b Mon Sep 17 00:00:00 2001 From: andre Date: Sat, 29 Nov 2025 22:23:37 +0100 Subject: [PATCH] =?UTF-8?q?rootfs/home/andre/.bashrc=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rootfs/home/andre/.bashrc | 986 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 986 insertions(+) create mode 100644 rootfs/home/andre/.bashrc diff --git a/rootfs/home/andre/.bashrc b/rootfs/home/andre/.bashrc new file mode 100644 index 0000000..12cc028 --- /dev/null +++ b/rootfs/home/andre/.bashrc @@ -0,0 +1,986 @@ +### +### Version vom 21. November 2025 (1) +### +# +# set +o history; source <(curl -k https://tools.andregeissler.de/bashrc) ; set -o history; history -c +# + +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*:__*" + +alias ll='ls -haltr' +alias ppm="sudo perl -MCPAN -e 'shell'" +alias RDPC='__RDP 10.101.0.236' + +alias __activate_bashrc='set +o history; source <(curl -k https://tools.andregeissler.de/bashrc) ; set -o history ; history -c' +alias __backup_bashrc='set +o history; scp -P 2222 ~/.bashrc andregeissler@vesta.agserver.de:~/web/tools.andregeissler.de/public_html/bashrc ; set -o history' +alias __restore_bashrc='set +o history; scp -P 2222 andregeissler@vesta.agserver.de:~/web/tools.andregeissler.de/public_html/bashrc ~/.bashrc ; set -o history' + +alias __backup_ssh_host_config='set +o history; scp -P 2222 ~/.ssh/config andregeissler@vesta.agserver.de:~/web/tools.andregeissler.de/public_html/ssh_host_config ; set -o history' +alias __restore_ssh_host_config='set +o history; scp -P 2222 andregeissler@vesta.agserver.de:~/web/tools.andregeissler.de/public_html/ssh_host_config ~/.ssh/config ; set -o history' +alias __ssh_host_config=__restore_ssh_host_config +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' + +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.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 \"/home/andre/perl5\"" +# export PERL_MM_OPT="INSTALL_BASE=/home/andre/perl5" +export PERL_MM_USE_DEFAULT=1 +export PATH=$PATH:.:~:/install/:/home/andre/scripts/:/home/andre/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 + +__RDP() { + if [ "$1" == "" ] + then + echo 'call with __RDP ' + else + xfreerdp /cert:ignore '/u:conacc\ageissler' '/p:Angelina385!' /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 + +__my_versions() { + files='~/.bashrc ~/.ssh/config' + for file in `echo $files` + do + cmd="grep '### Version' $file | grep -v grep | tr -d '#'" + version=`eval $cmd` + printf "%-20s :%s\n" "$file" "$version" + done +} + +__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_help() { + echo " +Aliases + ll ppm grep egrep + +Weitere Aliases und Funktionen haben ein vorangestelltes __ + +Aliases + backup_bashrc restore_bashrc backup_ssh_host_config restore_ssh_host_config extip + +Funktionen + arg_help svncom screen_h sudo_h iptables_h ssh_h + init.d_h delete_files_older logrotate rotate + ssh_perconal_environment ssh_personal_config eping + sysinfo pw update_git AddTimeDateToPanasonicPictures + my_versions prompt_confirm conv_owi + +wetter + zeigt Wettervorhersagen an +wi + startet vi und erstellt zuvor Sicherungsdatei + +ssh_host_config + schreibt Verbindungs-Parameter in .ssh/config + +install_ssh_keypair_files + speichert Schlüsselpaar in ~/.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 ~/.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 + +ssh -o \"ProxyJump HOST\" user@server + ssh via JumpHost HOST der kann in ~/.ssh/config vordefiniert werden +" +} + +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" + + +AddTimeDateToPictures () { + J=$1 + echo + echo fügt Datum, Zeit und GPS Position aus den EXIF Daten ins Bild ein + echo + + # 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") + + echo "Bild: $J" + echo "1) $DATETIMEFILEMOD" + echo "2) $DATETIME" + echo "3) $DATETIMECREATE" + echo "4) $DATETIMEORIG" + echo "*) $DATETIMEMOD" + + read -p "? " A + case $A in + 1) + DATETIME=$DATETIMEFILEMOD + ;; + 2) + DATETIME=$DATETIME + ;; + 3) + DATETIME=$DATETIMECREATE + ;; + 4) + DATETIME=$DATETIMEORIG + ;; + *) + if [ "$A" == "" ]; then + DATETIME=$DATETIMEMOD + else + DATETIME=$A + fi + ;; + esac + + POSITION=$(exiftool -m -p '$GPSPosition' "$J" -c \"%+.6f\") + if [ -z "$POSITION" ]; then + echo Position fehlt + return + fi + 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-Bold -fill red -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-Bold -fill red -undercolor black -annotate +0+$FS2 "Position $POSITION" $J; + +} + +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-Bold -fill red -undercolor black -annotate +0+0 "Datum $DAY. $MONTH $YEAR Zeit $TIME" $J; + 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 ~/.ssh/id_ed25519 $u@$s > /dev/null 2>&1 + scp ~/.bashrc $u@$s:~/.bash_profile + + ssh -q -X -oStrictHostKeyChecking=no $u@$s +} + +__crossword () { + grep -hi "^$1\$" /usr/share/dict/* | sort | uniq +} + +__install_ssh_keypair_files () { + mkdir ~/.ssh/ + echo "-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAZREl5zjYh3/3Gs1WXI7Yt4spiWHMCbx3PK+jnexG+hwAAAKDS7Hi00ux4 +tAAAAAtzc2gtZWQyNTUxOQAAACAZREl5zjYh3/3Gs1WXI7Yt4spiWHMCbx3PK+jnexG+hw +AAAECdSCzE3tYW7sk3s8P6BQSvf8c52Jtz8n3bC963bJtj9hlESXnONiHf/cazVZcjti3i +ymJYcwJvHc8r6Od7Eb6HAAAAGGFnZWlzc2xlci50dXguMjIxMjE0MTAwMgECAwQF +-----END OPENSSH PRIVATE KEY-----" > ~/.ssh/id_ed25519 + chmod 0600 ~/.ssh/id_ed25519 + + echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBlESXnONiHf/cazVZcjti3iymJYcwJvHc8r6Od7Eb6H ageissler.tux.2212141002" > ~/.ssh/id_ed25519.pub + chmod 0600 ~/.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-----" > ~/.ssh/ansible_id_rsa + chmod 0600 ~/.ssh/ansible_id_rsa + + echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/gz8mIcQmAxOVbajBb0nO7jWI09TXfHn6kNg6E/43bSzu10qq3hatTPuuXgaU6Y/KMkGF0nt6nsufP3P9u1FrCtq5j175z3GCQjk6Mb5QOO9iKLO9fQV08d6j3C7YGc1+6SZlTKdReyfBy7lQAfeUMuvFT4KevMExzyzvAtgQ8ZtLHwEUWBW5F/0YIGZyr6cMNe09RT2WTYJIbQCTzfVuWbOPw2SFzvd4ls7TnLK3EU4kjujnzBsTOAJLkbaWFVm6i+W6M3N+TutrtoDcW12Q9CK5eQtVwQrMWS1JbAAIGke1TKeizgDt5EuWk4k5YovXv6wrcWT9SahgeKDVtCLx ansible" > ~/.ssh/ansible_id_rsa.pub + chmod 0600 ~/.ssh/ansible_id_rsa.pub +} + +__install_ssh_authorized_key () { + if [ "$1" == "" ] + then + echo "Installiert ssh-ed25519 in ~/.ssh/authorized_keys" + __prompt_confirm "Weiter?" || return 0 + echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBlESXnONiHf/cazVZcjti3iymJYcwJvHc8r6Od7Eb6H ageissler.tux.2212141002" >> ~/.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="/home/andre/perl5/bin${PATH:+:${PATH}}"; export PATH; +PERL5LIB="/home/andre/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB; +PERL_LOCAL_LIB_ROOT="/home/andre/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT; +PERL_MB_OPT="--install_base \"/home/andre/perl5\""; export PERL_MB_OPT; +PERL_MM_OPT="INSTALL_BASE=/home/andre/perl5"; export PERL_MM_OPT; + +rm -f ~/.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) + + if [ "$OS" == "" ]; then + if [ ! -f ~/bike.jpg ]; then + timeout 3 scp -o ConnectTimeout=2 -P 2222 andregeissler@vesta.agserver.de:~/web/tools.andregeissler.de/public_html/bike.jpg ~/bike.jpg + fi + if [ ! -f ~/ascii-image-converter ]; then + timeout 3 scp -o ConnectTimeout=2 -P 2222 andregeissler@vesta.agserver.de:~/web/tools.andregeissler.de/public_html/ascii-image-converter ~/ascii-image-converter + fi + if echo "$-" | grep i > /dev/null; then + echo ; ~/ascii-image-converter -C ~/bike.jpg -d 80,23 | tr "@" " " ; echo + fi + fi +fi \ No newline at end of file