From 37aa1445e9d2153402400f9304615ce94233dd79 Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Mon, 21 Oct 2019 22:47:03 -0400 Subject: [PATCH] logging and optimizations --- conflink | 14 +++- distro-end | 217 +++++++++++++++++++++++++++-------------------------- pkgs | 3 +- 3 files changed, 123 insertions(+), 111 deletions(-) diff --git a/conflink b/conflink index aecd037..d72f98c 100755 --- a/conflink +++ b/conflink @@ -24,14 +24,25 @@ m() { s() { sudo "$@"; } lnf() { /a/exe/lnf "$@"; } +now=$(date +%s) +f=~/.local/conflink +fast=false +if [[ -e $f ]] && (( $(stat -c %Y $f) > $now - 60*60*24 )); then + fast=true +fi if [[ $1 == -f ]]; then # f for fast - lnf() { ln -sf "$@"; } + fast=true + shift elif [[ $1 ]]; then echo "error: unrecognized arguments" >&2 exit 0 fi +if $fast; then + lnf() { ln -sf "$@"; } +fi + shopt -s nullglob shopt -s extglob shopt -s dotglob @@ -164,4 +175,3 @@ case $user in echo "$0: error: unexpected user"; exit 1 ;; esac - diff --git a/distro-end b/distro-end index 61008fa..7f2f12c 100755 --- a/distro-end +++ b/distro-end @@ -18,7 +18,6 @@ _errcatch_cleanup() { # shellcheck source=./pkgs source $src/pkgs -set -x exec &> >(sudo tee -a /var/log/distro-end) echo "$0: $(date): starting now)" # see example of usage to understand. @@ -38,12 +37,17 @@ end() { fi exit 0 } -die() { - printf "$0: %s\n" "$*" >&2; exit 1 +pre="${0##*/}:" +s() { + printf "s %s\n" "$*" + SUDOD="$PWD" sudo -i "$@"; } -spa() { # simple package add - simple_packages+=($@) +sd() { + s dd of="$1" 2>/dev/null } +m() { printf "$pre %s\n" "$*"; "$@"; } +e() { printf "$pre %s\n" "$*"; } +err() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $0: $*" >&2; } distro=$(distro-name) codename=$(debian-codename) codename_compat=$(debian-codename-compat) @@ -70,7 +74,6 @@ pi ${p2[@]} conflink - # no equivalent in other distros: if isdeb && pcheck apt-file; then # this condition is just a speed optimization @@ -87,12 +90,12 @@ case $distro in # i'd rather disable the service than comment the init file # this says disabling the service, it will still get restarted # but this script doesn't do anything on restart, so it should be fine - s dd of=/var/run/motd.dynamic if=/dev/null + s truncate -s0 /var/run/motd.dynamic ;; trisquel|ubuntu) # this isn't a complete solution. It still shows me when updates are available, # but it's no big deal. - s rm -f /etc/update-motd.d/10-help-text /etc/update-motd.d/00-header + s rm -fv /etc/update-motd.d/10-help-text /etc/update-motd.d/00-header ;; esac @@ -110,22 +113,22 @@ elif [[ $codename_compat == xenial ]]; then l="deb http://ppa.launchpad.net/certbot/certbot/ubuntu xenial main" if ! grep -xFq "$l" /etc/apt/sources.list{,.d/*.list}; then s add-apt-repository -y ppa:certbot/certbot ||: - p update + m p update fi pi python-certbot-apache else - die "distro unknown for certbot" + err "distro unknown for certbot" fi # make a version of the certbot timer that emails me. x=/systemd/system/certbot -$sed -r -f - /lib$x.timer <<'EOF' |s dd of=/etc${x}mail.timer +$sed -r -f - /lib$x.timer <<'EOF' |sd /etc${x}mail.timer s,^Description.*,\0 mail version, EOF -$sed -r -f - /lib$x.service <<'EOF' |s dd of=/etc${x}mail.service +$sed -r -f - /lib$x.service <<'EOF' |sd /etc${x}mail.service s,(ExecStart=)(/usr/bin/certbot),\1/a/bin/log-quiet/sysd-mail-once certbotmail \2 --renew-hook /a/bin/distro-setup/certbot-renew-hook, EOF ser daemon-reload -sgo certbotmail.timer +m sgo certbotmail.timer ### end certbot install ### @@ -164,7 +167,7 @@ case $(debian-codename) in # needed for debootstrap scripts for fai since fai requires debian flidas) curl http://archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg | s apt-key add - - s dd of=/etc/apt/preferences.d/flidas-xenial </dev/null </dev/null </dev/null; then + s apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 + sd /etc/apt/preferences.d/flidas-bionic <$t </dev/null <<'EOF' + sd /etc/systemd/system/znc.service 2>/dev/null <<'EOF' [Unit] Description=ZNC, an advanced IRC bouncer After=network-online.target @@ -554,7 +561,7 @@ User=znc WantedBy=multi-user.target EOF ser daemon-reload - sgo znc + m sgo znc ###### stop znc setup ##### end @@ -592,11 +599,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) -sgo fsf-vpn-dns-cleanup +m sgo fsf-vpn-dns-cleanup # website is dead june 14 2019. back in october, but meh -s rm -f /etc/apt/sources.list.d/iridium-browser.list +s rm -fv /etc/apt/sources.list.d/iridium-browser.list # case $distro in # debian) # pi chromium ;; @@ -639,7 +646,7 @@ s rm -f /etc/apt/sources.list.d/iridium-browser.list # done # key already exists, so this won't generate one, just the configs. -vpn-server-setup -rds +m vpn-server-setup -rds s 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" @@ -653,7 +660,7 @@ if [[ $HOSTNAME == tp ]]; then else vpn_service=openvpn@server fi - sgo $vpn_service + m sgo $vpn_service fi ### end vpn server setup @@ -661,7 +668,7 @@ fi ##### rss2email # note, see bashrc for more documentation. pi rss2email -s dd of=/etc/systemd/system/rss2email.service <<'EOF' +sd /etc/systemd/system/rss2email.service <<'EOF' [Unit] Description=rss2email After=multi-user.target @@ -674,7 +681,7 @@ Type=oneshot # we pass options to use different location. ExecStart=/a/bin/log-quiet/sysd-mail-once -288 rss2email r2e -d /p/c/rss2email.json -c /p/c/rss2email.cfg run EOF -s dd of=/etc/systemd/system/rss2email.timer <<'EOF' +sd /etc/systemd/system/rss2email.timer <<'EOF' [Unit] Description=rss2email @@ -692,7 +699,7 @@ s systemctl daemon-reload ######### begin pump.io periodic backup ############# if [[ $HOSTNAME == frodo ]]; then - s dd of=/etc/systemd/system/pumpbackup.service <<'EOF' + sd /etc/systemd/system/pumpbackup.service <<'EOF' [Unit] Description=pump li backup After=multi-user.target @@ -702,7 +709,7 @@ User=iank Type=oneshot ExecStart=/a/bin/log-quiet/sysd-mail-once pump-backup /a/bin/distro-setup/pump-backup EOF - s dd of=/etc/systemd/system/pumpbackup.timer <<'EOF' + sd /etc/systemd/system/pumpbackup.timer <<'EOF' [Unit] Description=pump li backup hourly @@ -712,15 +719,15 @@ OnCalendar=hourly [Install] WantedBy=timers.target EOF - s systemctl daemon-reload - sgo pumpbackup.timer + ser daemon-reload + m sgo pumpbackup.timer fi ######### end pump.io periodic backup ############# ######### begin irc periodic backup ############# if [[ $HOSTNAME == frodo ]]; then - s dd of=/etc/systemd/system/ircbackup.service <<'EOF' + sd /etc/systemd/system/ircbackup.service <<'EOF' [Unit] Description=irc li backup After=multi-user.target @@ -730,7 +737,7 @@ User=iank Type=oneshot ExecStart=/a/bin/log-quiet/sysd-mail-once irc-backup rsync -rlptDhSAX root@iankelling.org:/var/lib/znc/moddata/log/iank/freenode/ /k/irclogs EOF - s dd of=/etc/systemd/system/ircbackup.timer <<'EOF' + sd /etc/systemd/system/ircbackup.timer <<'EOF' [Unit] Description=irc li backup hourly @@ -748,10 +755,6 @@ fi ######### end irc periodic backup ############# -# https://github.com/jlebon/textern -cd /a/opt/textern -make native-install USER=1 - case $distro in debian|trisquel|ubuntu) # suggests resolvconf package. installing it here is redundant, but make sure anyways. @@ -763,7 +766,7 @@ case $distro in *) pi openvpn;; esac -/a/bin/distro-setup/radicale-setup +m /a/bin/distro-setup/radicale-setup ############# begin syncthing setup ########### @@ -783,14 +786,14 @@ if [[ $HOSTNAME == frodo ]]; then curl -s https://syncthing.net/release-key.txt | sudo apt-key add - s="deb http://apt.syncthing.net/ syncthing release" if [[ $(cat /etc/apt/sources.list.d/syncthing.list) != "$s" ]]; then - echo "$s" | s dd of=/etc/apt/sources.list.d/syncthing.list + echo "$s" | sd /etc/apt/sources.list.d/syncthing.list p update fi fi pi syncthing - lnf -T /w/syncthing /home/iank/.config/syncthing + m lnf -T /w/syncthing /home/iank/.config/syncthing ser daemon-reload # syncthing likely not properly packaged - sgo syncthing@iank # runs as iank + m 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 @@ -849,11 +852,11 @@ esac # sakura config is owned by ian -reset-sakura -reset-konsole -sudo -u user2 -i reset-konsole +m reset-sakura +m reset-konsole +m sudo -u user2 -i reset-konsole # user2 xscreensaver we don't want to reset -reset-xscreensaver +m reset-xscreensaver # this would install from cabal for newer / consistent version across os, but it screws up xmonad, so disabled for now. @@ -864,22 +867,22 @@ reset-xscreensaver # also, i assume syncing this between machines somehow messed thin #lnf -T /m/arbtt-capture.log ~/.arbtt/capture.log -primary-setup +m primary-setup if [[ ! -e ~/.linphonerc && -e /p/.linphonerc-initial ]]; then - cp /p/.linphonerc-initial ~/.linphonerc + m cp /p/.linphonerc-initial ~/.linphonerc fi ### begin spd install pi libswitch-perl libdigest-md5-file-perl libgnupg-interface-perl t=$(mktemp) -wget -O $t http://mirror.fsf.org/fsfsys-trisquel/fsfsys-trisquel/pool/main/s/spd-perl/spd-perl_0.2-1_amd64.deb +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 -rm $t +m rm $t # this guesses at the appropriate directory, adjust if needed perldir=(/usr/lib/x86_64-linux-gnu/perl/5.*) -sudo ln -sf ../../../perl/5.18.2/SPD/ ${perldir[0]} +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 @@ -956,7 +959,7 @@ mkschroot() { fi apps=($@) d=/nocow/schroot/$n - s dd of=/etc/schroot/chroot.d/$n.conf </dev/null) || continue + if [[ ! $uid -ge 1000 ]]; then continue fi d=$f/.config/transmission-remote-gtk @@ -1223,7 +1227,7 @@ for x in iank user2; do s usermod -a -G libvirt,kvm $x; done # http://wiki.qemu.org/Features-Done/HelperNetworking # s mkdir /etc/qemu # f=/etc/qemu/bridge.conf -# s dd of=$f <<'EOF' +# sd $f <<'EOF' # allow br0 # EOF # #s chown root:qemu $f # debian has somethig like qemu-libvirt. equivalent? @@ -1231,7 +1235,9 @@ for x in iank user2; do s usermod -a -G libvirt,kvm $x; done # general known for debian/ubuntu, not for fedora -/a/bin/buildscripts/go +m /a/bin/buildscripts/go +m /a/bin/buildscripts/rust +m /a/bin/buildscripts/misc pi-nostart virtinst virt-manager @@ -1258,7 +1264,7 @@ pi --no-install-recommends kdeconnect # also built latest arduino in /a/opt/Arduino, (just cd build; ant build; ant run ) # set arduino var in bashrc, # have system config file setup too. -sudo adduser $USER dialout +s adduser $USER dialout # this is for the mail command too. update-alternatives is kind of misleading # since at least it's main commands pretend mail does not exist. @@ -1322,17 +1328,17 @@ fi # displays l and I as the same char, grrrrr. s fc-cache -/a/bin/distro-setup/mymimes +m /a/bin/distro-setup/mymimes -sgo dynamicipupdate +m sgo dynamicipupdate # stop autopoping windows when i plug in an android phone. # dbus-launch makes this work within an ssh connection, otherwise you get this message, # with still 0 exit code. # dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY -dbus-launch gsettings set org.gnome.desktop.media-handling automount-open false +m dbus-launch gsettings set org.gnome.desktop.media-handling automount-open false # on grub upgrade, we get prompts unless we do this @@ -1350,10 +1356,10 @@ sgo btrfsmaint.timer sgo btrfsmaintstop.timer # aren't autoupdating this, but I do check on it somewhat regularly. -cd /a/opt/btrbk +m cd /a/opt/btrbk s make install -sgo btrbk.timer +m sgo btrbk.timer # note: to see when it was last run, # ser list-timers @@ -1363,17 +1369,12 @@ In mate settings settings, change scrolling to two-finger, because the default edge scroll doesn\'t work. Originally found this in debian. EOF -case $distro in - debian) - # remove dep that came in with desktop - pu transmission-gtk - ;; -esac - +# Remove dep that came in with desktop to fix associations. +m pu transmission-gtk -s gpasswd -a iank adm ;; #needed for reading logs +s gpasswd -a iank adm #needed for reading logs -/a/bin/buildscripts/pithosfly +m /a/bin/buildscripts/pithosfly # # Based on guix manual instructions, also added code to profile. @@ -1394,10 +1395,10 @@ s gpasswd -a iank adm ;; #needed for reading logs pi tor -/a/bin/buildscripts/tor-browser +m /a/bin/buildscripts/tor-browser # nfs server -pi-nostart nfs-server +pi-nostart nfs-kernel-server # networkmanager has this nasty behavior on flidas: if the machine # crashes with dnsmasq running, on subsequent boot, it adds an entry to diff --git a/pkgs b/pkgs index 65fad01..59e35ea 100644 --- a/pkgs +++ b/pkgs @@ -166,7 +166,8 @@ p3=( sakura schroot shellcheck - sig2dot + # for sig2dot + signing-party sipcalc sqlite3-doc squashfs-tools -- 2.30.2