Skip to content

Instantly share code, notes, and snippets.

@obfusk
Last active June 23, 2018 21:25
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save obfusk/7f081ca7a0eae946fc7fc6821b4680b4 to your computer and use it in GitHub Desktop.
Save obfusk/7f081ca7a0eae946fc7fc6821b4680b4 to your computer and use it in GitHub Desktop.
m-over-reverse-ssh
#!/bin/bash
cleanup() {
trap - EXIT INT TERM HUP
rm -f ~/._m_fifo_{i,o}
}
echo CLIENT SSH >&2
mkfifo ~/._m_fifo_{i,o}
trap cleanup EXIT; trap exit INT TERM HUP
{ while cat ~/._m_fifo_o; do :; done; } & cat > ~/._m_fifo_i; wait
#!/bin/bash
cleanup() {
trap - EXIT INT TERM HUP
kill 0
}
echo CLIENT >&2
trap cleanup EXIT; trap exit INT TERM HUP
{ while cat ~/._m_fifo_i; do :; done; } &
while read -r -p ">>> "; do
echo "$REPLY" > ~/._m_fifo_o; sleep 0.1
done
#!/bin/bash
cleanup() {
trap - EXIT INT TERM HUP
rm -f ~/._m_fifo
}
echo SERVER SSH >&2
mkfifo ~/._m_fifo
trap cleanup EXIT; trap exit INT TERM HUP
run() { "$@"; } # ssh THE_CLIENT "$@"
run ./client-ssh.sh < ~/._m_fifo | ./server.sh > ~/._m_fifo
#!/bin/bash
echo SERVER >&2
while read -r; do
echo "[$REPLY]" >&2
case "$REPLY" in
pwd) echo pwd ;;
"cd "*) echo cd "${REPLY:3}" ;;
ls) echo m ls -n ;;
next) echo m next ;;
"play "*) echo m play -- "${REPLY:5}" ;;
p) echo xdotool key space ;;
quit) echo xdotool key alt+f4 ;;
*) echo unknown command ;;
esac
echo
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment