for x in /a/bin/bash_unpublished/*; do source $x; done
source $(dirname $(readlink -f $BASH_SOURCE))/path_add-function
source /a/bin/log-quiet/logq-function
+source /a/bin/log-once/log-once-function
path_add /a/exe
path_add --ifexists --end /a/opt/adt-bundle*/tools /a/opt/adt-bundle*/platform-tools
# todo, these need to be renamed to be less generic.
local h=${1##*@}
ssh-keygen -R $h
local x=$(timeout 0.1 ssh -v $1 |& sed -rn "s/debug1: Connecting to $h \[([^\]*)].*/\1/p");
- ssh-keygen -R $x
+ ssh-keygen -R $x -f $(readlink -f ~/.ssh/known_hosts)
}
khfix() { # known hosts fix
_khfix_common "$@"
if [[ $1 == -R ]]; then
shift
command chown -h "$@"
- command chown "$@"
- command chown -RH "$@"
+ command chown -R "$@"
else
command chown "$@"
fi
if (($linecount > $max_lines)); then
prune_lines=$(($linecount - $max_lines))
head -n $prune_lines "$HISTFILE" >> "$harchive" \
- && sed -ie "1,${prune_lines}d" $HISTFILE
+ && sed --follow-symlinks -ie "1,${prune_lines}d" $HISTFILE
fi
}
mkdir() { command mkdir -p "$@"; }
+pithos() {
+ cd /a/opt/Pithosfly/
+ python3 -m pithos&r
+}
+
pakaraoke() {
# from http://askubuntu.com/questions/456021/remove-vocals-from-mp3-and-get-only-instrumentals
pactl load-module module-ladspa-sink sink_name=Karaoke master=alsa_output.usb-Audioengine_Audioengine_D1-00.analog-stereo plugin=karaoke_1409 label=karaoke control=-30
rld /a/h/_site/ li:/var/www/iankelling.org/html
}
+pubip() { curl -4s https://icanhazip.com; }
+whatismyip() { pubip; }
+
+
pwgen() {
apg -s -m 10 -x 14 -t
}
opts=("${@:1:$#-2}") # 1 to last -2
path="${@:$#}" # last
host="${@:$#-1:1}" # last -1
+ if [[ $path == .* ]]; then echo error: need absolut path; return 1; fi
# rync here uses checksum instead of time so we don't mess with
# unison relying on time as much. g is for group, same reason
# to keep up with unison.
command srm -ll "$@"
}
+srun() {
+ scp $2 $1:/tmp
+ ssh $1 /tmp/${2##*/} "${@:2}"
+}
+
t() {
local x
local -a args
fi
}
+vc() {
+ [[ $1 ]] || { e "$0: error, expected cmd to run"; return 1; }
+ # manually run vpn so it stays within a network namespace,
+ # until I get it all wired up with systemd.
+ newns vpn start
+ pid=$(< /run/openvpn/client.pid)
+ if [[ ! $pid ]]; then
+ s ip netns exec vpn /usr/sbin/openvpn --daemon ovpn --config /etc/openvpn/client.conf --cd /etc/openvpn --writepid /run/openvpn/client.pid
+ elif [[ ! -e /proc/$pid ]]; then
+ echo "$0: ERROR: pidfile pid $pid is not a process!!!"
+ return 1
+ fi
+ gksudo -- ip netns exec vpn gksudo -u ${SUDO_USER:-$USER} "$@"
+}
+
+transmission() {
+ vc transmission-gtk&
+ i=0
+ while ((i < 10)); do
+ tun_ip=$(s ip netns exec vpn ip a show dev tun0 | sed -rn 's/^ *inet (10\.8\.\S+).*/\1/p')
+ [[ ! $tun_ip ]] || break
+ sleep 1
+ done
+ echo "$0: tun_ip=$tun_ip"
+ [[ $tun_ip ]] || { e "$0: error: no tun0 addr found"; return 1; }
+ ssh dopub bash <<EOF
+rule="-A PREROUTING -i eth0 -p tcp -m tcp --dport 63324 -j DNAT --to-destination $tun_ip:63324"
+found=false
+while read -r line; do
+ if [[ \$line == \$rule ]] && ! \$found; then
+ found=true
+ else
+ iptables -t nat -D \${line#-A}
+ fi
+done < <(iptables -t nat -S | grep -E -- '--dport\s+63324')
+\$found || iptables -t nat \$rule
+EOF
+}
+
virshrm() {
for x in "$@"; do virsh destroy "$x"; virsh undefine "$x"; done
}
journalctl --unit=openvpn@client -f -n0
}
+
vpnoff() {
s systemctl stop openvpn@client
}
export rvmsudo_secure_path=1
# for other script I wrote
-export ACME_TINY_PATH=/a/opt/acme-tiny
-export lt ACME_TINY_WRAPPER_CERT_DIR=/p/c/machine_specific/$HOSTNAME
+#export ACME_TINY_PATH=/a/opt/acme-tiny
+export ACME_TINY_WRAPPER_CERT_DIR=/p/c/machine_specific/$HOSTNAME/webservercerts
if [[ -s "/usr/local/rvm/scripts/rvm" ]]; then
source "/usr/local/rvm/scripts/rvm"
source $HOME/.rvm/scripts/rvm
fi
-mkdir -p ~/.npm-global
-npm config set prefix '~/.npm-global'
+
path_add --end ~/.npm-global
# https://wiki.archlinux.org/index.php/Xinitrc#Autostart_X_at_login