pactl load-module module-remap-source source_name=iancombine master=ianinput.monitor source_properties=device.description=iancombine
}
+# h ssh test
+# For testing restrictive ssh.
hstest() {
install-my-scripts
d=$(mktemp -d)
s command ssh -F $d/config -i /q/root/h "$@"
}
-hrtest() {
+# h rsync test
+# For testing restrictive rsync
+hrtest() { #
install-my-scripts
d=$(mktemp -d)
sed '/^ *IdentityFile/d' ~/.ssh/config >$d/config
s rsync -e "ssh -F $d/config -i /q/root/h" "$@"
}
+# rsync as root and avoid the default restrictive h key & config.
+rootrsync() {
+ s rsync -e "ssh -F /root/.ssh/confighome" "$@"
+}
+
+zcheck() {
+ s ssh bow DISPLAY=:0 scrot /tmp/oegu.jpg
+ s scp bow:/tmp/oegu.jpg /t
+ s ssh bow rm /tmp/oegu.jpg
+ feh /t/oegu.jpg
+ }
slemacs() {
local arg rtime v
# s sshfs bu@$host:/bu/home/md /bu/mnt -o reconnect,ServerAliveInterval=20,ServerAliveCountMax=30 -o allow_other
eqgo() {
- enn -M $(exiqgrep -i)
+ enn -M $(exiqgrep -i -r.\*)
}
eqgo1() {
- enn -M $(exiqgrep -i|h1)
+ enn -M $(exipick -i -r.\*|h1)
}
journalctl -qn2 -f -u "$cmd_name" &
# Guess of time needed to avoid missing initial lines.
# .5 was not reliable. 1 was not reliable. 2 was not reliable
- sleep 3
+ sleep 4
# We kill this in prompt-command for the case that we ctrl-c the
# systemd-cat. i dont know any way to trap ctrl-c and still run the
# normal action for it. There might be a way, unsure.
fg &>/dev/null ||:
}
-sm() {
+sm() { # switch mail host
local tmp keyhash
c /
# run latest
s jrun switch-mail-host "$@"
return $ret
}
+sh2() { # switch host2
+ local tmp keyhash
+ c /
+ # run latest
+ keyhash=$(s ssh-keygen -lf /root/.ssh/home | awk '{print $2}')
+ tmp=$(s ssh-add -l | awk '$2 == "'$keyhash'"')
+ if [[ ! $tmp ]]; then
+ s ssh-add /root/.ssh/home
+ fi
+ install-my-scripts
+ s jrun switch-host2 "$@"
+ return $ret
+}
# shellcheck disable=SC2120
lipush() {
mo() { xset dpms force off; } # monitor off
+mpvgpu() {
+ # seems to be the best gpu decoding on my nvidia 670.
+ # vlc gets similar or better framerate, but is much darker output on my test movie at least.
+
+
+ case $HOSTNAME in
+ kd)
+ echo 0f | sudo tee -a /sys/kernel/debug/dri/0/pstate
+ ;;
+ esac
+ # going back to the default slow clock, and slower fan:
+ # echo 07 | sudo tee -a /sys/kernel/debug/dri/0/pstate
+ if [[ $DISPLAY ]]; then
+ mpv --vo=vdpau --hwdec=auto "$@"
+ else
+ # waylandvk seems to work the same
+ mpv --gpu-context=wayland --hwdec=auto
+ fi
+}
+
mpvd() {
mpv --profile=d "$@";
}
fi
}
-# alert when a page goes live. not urgent.
+# alert when a page goes live.
alert200() {
+ local quiet url tmpdir
+ quiet=false
+ case $1 in
+ # dont send a diff of the html. some html is not very readable
+ -q) quiet=true
+ shift
+ ;;
+ esac
url="$1"
tmpdir="$(mktemp -d)"
cd $tmpdir
while true; do
- if torsocks wget -q "$url"; then
- alertme $tmpdir
+ if wget -q "$url"; then
+ if $quiet; then
+ echo | daylert 200
+ else
+ alertme $tmpdir
+ fi
fi
- sleep $(( 600 + RANDOM % 300 ))
+ sleep $(( 120 + RANDOM % 300 ))
done
}
#
# -t = get recipient from header
exim -d -t <<'EOF'
-From: i@dmarctest.b8.nz
-To: mailman@dev.fsf.org
+From: root@$(hostname-f)
+To: root@$(hostname-f)
Subject: test2
-Reply-to: rtest@iankelling.org
This is a test message.
EOF
# get pid of systemd service
servicepid() {
- local pid unit
+ local pid unit dir
unit="$1"
pid=$(systemctl show --property MainPID --value "$unit")
case $pid in
[1-9]*) : ;;
*)
+
+ dir=/sys/fs/cgroup/system.slice
+ if [[ ! -d $dir ]]; then
+ # t10 and older directory.
+ dir=/sys/fs/cgroup/systemd/system.slice
+ fi
+
# 0 or empty. This file includes the MainPid, so I expect we
# could just get this in the first place, but i don't know if that
# is always the case.
- pid=$(head -n1 /sys/fs/cgroup/systemd/system.slice/${unit%.service}.service/cgroup.procs)
+ pid=$(head -n1 $dir/${unit%.service}.service/cgroup.procs)
;;
esac
if [[ $pid ]]; then
sdnbash() { # systemd namespace bash
local unit pid
+ if (( $# != 1 )); then
+ echo $0: error wrong number of args >&2
+ return 1
+ fi
unit=$1
pid=$(servicepid $unit)
m sudo nsenter -t $pid -n -m sudo -u $USER -i bash
sdncmd() { # systemd namespace cmd
local unit pid
+ if (( $# <= 2 )); then
+ echo $0: error wrong number of args >&2
+ return 1
+ fi
unit=$1
shift
pid=$(servicepid $unit)
}
mailnncheck() {
- local p pid ns mailnn
+ local unit pid ns mailnn
# mailvpn would belong on the list if using openvpn
- for p in mailnn unbound dovecot spamassassin exim4 radicale; do
-
-
- pid=$(systemctl show --property MainPID --value $unit)
- case $pid in
- [1-9]*) : ;;
- *)
- # 0 or empty. This file includes the MainPid, so I expect we
- # could just get this in the first place, but i don't know if
- # that is always the case.
- pid=$(head -n1 /sys/fs/cgroup/systemd/system.slice/${unit%.service}.service/cgroup.procs)
- ;;
- esac
- echo p=$p pid=$pid
+ for unit in mailnn unbound dovecot spamassassin exim4 radicale; do
+ pid=$(servicepid $unit)
+ echo debug: unit=$unit pid=$pid
if [[ ! $pid ]]; then
- echo failed to find pid for $p
+ echo failed to find pid for unit=$unit
continue
fi
if ! ns=$(s readlink /proc/$pid/ns/net); then
- echo failed to find ns for $p pid=$pid
+ echo failed to find ns for unit=$unit pid=$pid
continue
fi
if [[ $mailnn ]]; then
if [[ $ns != "$mailnn" ]]; then
- echo "$p ns $ns != $mailnn"
+ echo "$unit ns $ns != $mailnn"
fi
else
mailnn=$ns
}
fixu() {
+ local stats
ls -lad /run/user/1000
- s chmod 700 /run/user/1000; s chown iank.iank /run/user/1000
+ stats=$(stat -c%a-%g-%u /run/user/1000)
+ if [[ $stats != 700-1000-1000 ]]; then
+ m s chmod 700 /run/user/1000; m s chown iank.iank /run/user/1000
+ fi
}
# systemctl is-enabled / status / cat says nothing, instead theres
# --no-messages because of annoying errors on broken symlinks
# -z = search .gz etc files
# -. = search dotfilesq
- rg() { command rg -. -z --no-messages -L -i -M 900 --no-ignore-parent --no-ignore-vcs -g '!.git' "$@" || return $?; }
+ rg() { command rg -. -z --no-messages -L -i -M 900 --no-ignore-parent --no-ignore-vcs -g '!.git' -g '!auto-save-list' -g '!.savehist' "$@" || return $?; }
#fails if not exist. ignore
complete -r rg 2>/dev/null ||:
else