From 6061d88c7d5beda3e974943eb8676f7c39d4ae9f Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Tue, 5 Nov 2019 22:47:51 -0500 Subject: [PATCH] various fixes avoid sudo -i where possible because it starts another login shell, which doesn't know if its a part of a conditional and will do independent error printing which is confusing. --- brc | 42 +++++++---- brc2 | 37 ++++------ distro-begin | 56 +++++++------- distro-end | 183 +++++++++++++++++++++++----------------------- dynamic-ip-update | 4 +- system-status | 8 +- 6 files changed, 170 insertions(+), 160 deletions(-) diff --git a/brc b/brc index f943988..556c5ef 100644 --- a/brc +++ b/brc @@ -12,6 +12,18 @@ elif [[ -s ~/.iank/err ]]; then source ~/.iank/err fi +t2() { + echo t2 + popd + grep sdf sdfd + echo wtf +} +t1() { + echo t1 + trap + t2 a b c +} + # * settings CDPATH=. @@ -527,12 +539,12 @@ faf() { # find all files. use -L to follow symlinks # mail related frozen() { rm -rf /tmp/frozen - s mailq |gr frozen|awk '{print $3}' | while read -r id; do - s exim -Mvl $id + sudo mailq |gr frozen|awk '{print $3}' | while read -r id; do + sudo exim -Mvl $id echo - s exim -Mvh $id + sudo exim -Mvh $id echo - s exim -Mvb $id + sudo exim -Mvb $id echo -e '\n\n##############################\n' done | tee -a /tmp/frozen } @@ -544,7 +556,7 @@ frozenrm() { done < <(s mailq) echo "sleeping for 2 in case you change your mind" sleep 2 - s exim -Mrm "${ids[@]}" + sudo exim -Mrm "${ids[@]}" } funce() { @@ -670,7 +682,7 @@ hub() { wget -P /a/opt $up tar -C /a/opt -zxf /a/opt/$uptar rm -f /a/opt/$uptar - s /a/opt/$updir/install + sudo /a/opt/$updir/install fi # save token across computers @@ -715,7 +727,7 @@ ifn() { } ipdrop() { - s iptables -A INPUT -s $1 -j DROP + sudo iptables -A INPUT -s $1 -j DROP } @@ -930,7 +942,7 @@ rlu() { # [OPTS] HOST PATH # rync here uses checksum instead of time so we dont mess with # unison relying on time as much. g is for group, same reason # to keep up with unison. - s rsync -rlpchviog --relative "${opts[@]}" "$path" "root@$host:/"; + sudo rsync -rlpchviog --relative "${opts[@]}" "$path" "root@$host:/"; } rmstrips() { @@ -948,7 +960,7 @@ s() { # if [[ $EUID != 0 || $1 == -* ]]; then # shellcheck disable=SC2034 - SUDOD="$PWD" sudo -i "$@" + SUDOD="$PWD" command sudo -i "$@" else "$@" fi @@ -980,7 +992,7 @@ complete -F _root_command s sb ser() { - local s; [[ $EUID != 0 ]] && s=s + local s; [[ $EUID != 0 ]] && s=sudo if type -p systemctl &>/dev/null; then $s systemctl $1 $2 else @@ -1037,7 +1049,7 @@ sk() { # 2119: Functions with optional args get bad warnings when none are passed. # 2033: too many false positives for thing that will never work, passing shell function to find. # i had -x as an arg, but debian testing(stretch) doesn\'t support it - shellcheck -x -e 2086,2046,2068,2119,2033 "$@" + shellcheck -x -e 2086,2046,2068,2119,2033 "$@" || return $? # had this before. not sure what it is 2119 } @@ -1171,7 +1183,7 @@ psnetns() { local x netns netns=$1 ps -w | head -n 1 - s find -L /proc/[1-9]*/task/*/ns/net -samefile /run/netns/$netns | cut -d/ -f5 | \ + sudo find -L /proc/[1-9]*/task/*/ns/net -samefile /run/netns/$netns | cut -d/ -f5 | \ while read -r l; do x=$(ps -w --no-headers -p $l); if [[ $x ]]; then echo "$x"; else echo $l; fi; @@ -1190,10 +1202,10 @@ vm-set-listen(){ t=$(mktemp) local vm=$1 local ip=$2 - s virsh dumpxml $vm | sed -r "s/( *{/,/}/s/KP_Multiply/underscore/g' /usr/share/X11/xkb/symbols/keypad + sudo sed -i.orig '/key * *{/,/}/s/KP_Multiply/underscore/g' /usr/share/X11/xkb/symbols/keypad fi ##### basic graphical packages diff --git a/distro-end b/distro-end index a057d77..1b72e2e 100755 --- a/distro-end +++ b/distro-end @@ -32,19 +32,19 @@ end() { echo 0 >~/.local/distro-end if $pending_reboot; then echo "$0: pending reboot and then finished. doing it now." - s reboot now + sudo reboot now else echo "$0: $(date): ending now)" fi exit 0 } pre="${0##*/}:" -s() { - printf "s %s\n" "$*" - SUDOD="$PWD" sudo -i "$@"; +sudo() { + printf "$pre %s\n" "$*" + SUDOD="$PWD" command sudo "$@"; } sd() { - s dd of="$1" 2>/dev/null + sudo dd of="$1" 2>/dev/null } m() { printf "$pre %s\n" "$*"; "$@"; } e() { printf "$pre %s\n" "$*"; } @@ -54,9 +54,9 @@ codename=$(debian-codename) codename_compat=$(debian-codename-compat) pending_reboot=false sed="sed --follow-symlinks" -# template -case $distro in -esac +## template: +# case $distro in +# esac #### initial packages pup @@ -65,7 +65,7 @@ if isdeb; then fi # avoid prompts -s debconf-set-selections </dev/null; then - s apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 sd /etc/apt/preferences.d/flidas-bionic <$t < /dev/null; then + sudo useradd --create-home -d /var/lib/znc --system --shell /sbin/nologin --comment "Account to run ZNC daemon" --user-group znc + fi + sudo chmod 700 /var/lib/znc + sudo chown -R znc:znc /var/lib/znc # Avoid restarting if possible, reconnecting to irc is annoying. # The unit file was made active with conflink. - if [[ $(ser is-active znc) != active ]]; then - m sgo znc + # Note, avoid using ser here because we wrap sudo to prints the command first. + if [[ $(systemctl is-active znc) != active ]]; then + sgo znc fi ###### stop znc setup ##### @@ -611,11 +614,11 @@ esac pi ${pall[@]} $(apt-cache search ruby[.0-9]+-doc| awk '{print $1}') $(apt-cache depends gcc|grep -i suggests:| awk '{print $2}') $($src/distro-pkgs) -m sgo fsf-vpn-dns-cleanup +sgo fsf-vpn-dns-cleanup # website is dead june 14 2019. back in october, but meh -s rm -fv /etc/apt/sources.list.d/iridium-browser.list +sudo rm -fv /etc/apt/sources.list.d/iridium-browser.list # case $distro in # debian) # pi chromium ;; @@ -659,12 +662,12 @@ s rm -fv /etc/apt/sources.list.d/iridium-browser.list # key already exists, so this won't generate one, just the configs. m vpn-server-setup -rds -s tee -a /etc/openvpn/server/server.conf <<'EOF' +sudo tee -a /etc/openvpn/server/server.conf <<'EOF' push "dhcp-option DNS 10.0.0.1" push "route 10.0.0.0 255.255.0.0" client-connect /a/bin/distro-setup/vpn-client-connect EOF -s sed -i --follow-symlinks 's/10.8./10.9./g;s/^\s*port\s.*/port 1196/' /etc/openvpn/server/server.conf +sudo sed -i --follow-symlinks 's/10.8./10.9./g;s/^\s*port\s.*/port 1196/' /etc/openvpn/server/server.conf if [[ $HOSTNAME == tp ]]; then if [[ -e /lib/systemd/system/openvpn-server@.service ]]; then @@ -672,7 +675,7 @@ if [[ $HOSTNAME == tp ]]; then else vpn_service=openvpn@server fi - m sgo $vpn_service + sgo $vpn_service fi ### end vpn server setup @@ -706,7 +709,7 @@ OnUnitInactiveSec=300 [Install] WantedBy=timers.target EOF -s systemctl daemon-reload +sudo systemctl daemon-reload ######### begin pump.io periodic backup ############# @@ -732,7 +735,7 @@ OnCalendar=hourly WantedBy=timers.target EOF ser daemon-reload - m sgo pumpbackup.timer + sgo pumpbackup.timer fi ######### end pump.io periodic backup ############# @@ -759,7 +762,7 @@ OnCalendar=hourly [Install] WantedBy=timers.target EOF - s systemctl daemon-reload + sudo systemctl daemon-reload sgo ircbackup.timer fi @@ -805,7 +808,7 @@ if [[ $HOSTNAME == frodo ]]; then pi syncthing m lnf -T /w/syncthing /home/iank/.config/syncthing ser daemon-reload # syncthing likely not properly packaged - m sgo syncthing@iank # runs as iank + sgo syncthing@iank # runs as iank # these things persist in ~/.config/syncthing, which I save in # /w/syncthing (not in /p, because syncthing should continue to @@ -890,7 +893,7 @@ fi pi libswitch-perl libdigest-md5-file-perl libgnupg-interface-perl t=$(mktemp) m wget -O $t http://mirror.fsf.org/fsfsys-trisquel/fsfsys-trisquel/pool/main/s/spd-perl/spd-perl_0.2-1_amd64.deb -s dpkg -i $t +sudo dpkg -i $t m rm $t # this guesses at the appropriate directory, adjust if needed perldir=(/usr/lib/x86_64-linux-gnu/perl/5.*) @@ -898,7 +901,7 @@ m sudo ln -sf ../../../perl/5.18.2/SPD/ ${perldir[0]} # newer distro had gpg2 as default, older one, flidas, need to make it that way gpgpath=$(which gpg2) if [[ $x ]]; then - s mkdir -p /usr/local/spdhackfix + sudo mkdir -p /usr/local/spdhackfix s lnf -T $gpgpath /usr/local/spdhackfix/gpg fi ### end spd install @@ -981,16 +984,16 @@ preserve-environment=true users=$USER,user2 EOF if [[ -e $d/bin ]]; then - s chroot $d apt-get update - s chroot $d apt-get -y dist-upgrade --purge --auto-remove - cd; s schroot -c $n -- apt-get install --allow-unauthenticated -y ${apps[@]} + sudo chroot $d apt-get update + sudo chroot $d apt-get -y dist-upgrade --purge --auto-remove + cd; sudo schroot -c $n -- apt-get install --allow-unauthenticated -y ${apps[@]} else - s mkdir -p $d + sudo mkdir -p $d - s debootstrap $n $d $repo - cd; s schroot -c $n -- apt-get install --allow-unauthenticated -y ${apps[@]} + sudo debootstrap $n $d $repo + cd; sudo schroot -c $n -- apt-get install --allow-unauthenticated -y ${apps[@]} fi - s cp -P {,$d}/etc/localtime + sudo cp -P {,$d}/etc/localtime } sd /etc/systemd/system/schrootupdate.service <<'EOF' [Unit] @@ -1012,7 +1015,7 @@ OnCalendar=*-*-* 04:20:00 WantedBy=timers.target EOF ser daemon-reload -m sgo schrootupdate.timer +sgo schrootupdate.timer @@ -1026,8 +1029,8 @@ case $distro in ;; esac -s mkdir -p /nocow/user -s chown $USER:$USER /nocow/user +sudo mkdir -p /nocow/user +sudo chown $USER:$USER /nocow/user pi anki @@ -1046,21 +1049,21 @@ esac # 450 seems likely to be unused. we need to specify one or else # it won't be stable across installs. if ! getent passwd debian-transmission > /dev/null; then - s groupadd -g 450 debian-transmission - s adduser --quiet \ - --gid 450 \ - --uid 450 \ - --system \ - --no-create-home \ - --disabled-password \ - --home /var/lib/transmission-daemon \ - debian-transmission + sudo groupadd -g 450 debian-transmission + sudo adduser --quiet \ + --gid 450 \ + --uid 450 \ + --system \ + --no-create-home \ + --disabled-password \ + --home /var/lib/transmission-daemon \ + debian-transmission fi # We want group writable stuff from transmission. # However, after setting this, I learn that transmission sets it's # own umask based on it's settings file. Well, no harm leaving this # so it's set right from the beginning. -s chfn debian-transmission -o umask=0002 +sudo chfn debian-transmission -o umask=0002 # note i had to do this, which is persistent: # cd /i/k @@ -1073,7 +1076,7 @@ tu /etc/sysctl.conf<<'EOF' net.core.rmem_max = 67108864 net.core.wmem_max = 16777216 EOF -s sysctl -p +sudo sysctl -p # some reason it doesn\'t seem to start automatically anyways pi-nostart transmission-daemon @@ -1090,13 +1093,13 @@ f=$tdir/transmission-daemon mkdir -p $f s lnf -T $f /var/lib/transmission-daemon/.config/transmission-daemon s lnf -T /etc/transmission-daemon/settings.json $f/settings.json -s chown -R debian-transmission:debian-transmission $f +sudo chown -R debian-transmission:debian-transmission $f for f in $tdir/partial-torrents $tdir/torrents; do if [[ -e $f ]]; then - s chown -R debian-transmission:user2 $f + sudo chown -R debian-transmission:user2 $f fi done -s chown -R debian-transmission:debian-transmission /var/lib/transmission-daemon +sudo chown -R debian-transmission:debian-transmission /var/lib/transmission-daemon # # config file documented here, and it\'s the same config # for daemon vs client, so it\'s documented in the gui. @@ -1108,7 +1111,7 @@ s chown -R debian-transmission:debian-transmission /var/lib/transmission-daemon # # Changed the cache-size to 256 mb, reduces disk use. # It is a read & write cache. -s ruby </dev/null) ]]; then + # Just because i forget a lot, -mmin -NUM means files modified <= NUM minutes ago + if (( fmin < 0 )) && [[ $(find ${all_dirs[@]} -mmin $fmin -type f -print -quit 2>/dev/null) ]]; then v conflink newer filesystem files chars+=("CONFLINK!") break -- 2.30.2