| 1 | #!/bin/bash |
| 2 | dialog=$(which dialog); |
| 3 | |
| 4 | get_vbox_pipes() { |
| 5 | grep 'hostMode="HostPipe"' ~/.VirtualBox/Machines/*/*.xml | sed -e 's/.*path="\([^"]*\)".*/\1/g' | while read i; do |
| 6 | for prefix in '' "$HOME/" "$HOME/.VirtualBox/"; do |
| 7 | socket="$prefix""$i" |
| 8 | test -S "$socket" && { |
| 9 | echo "$socket"; |
| 10 | } |
| 11 | done; |
| 12 | done; |
| 13 | } |
| 14 | |
| 15 | tmp="$(mktemp)"; |
| 16 | get_vbox_pipes | while read socket; do |
| 17 | echo -n "$socket"; echo -ne '\0'; |
| 18 | echo -n "${socket##*/}"; echo -ne '\0'; |
| 19 | done | xargs -0 "$dialog" --no-shadow --trim --title 'Sockets' --backtitle 'VirtualBox serial terminal' --menu -- "Select the socket" 0 0 0 2>"$tmp" || { |
| 20 | echo 'ERROR: No vbox sockets found or selected. :-( Bye.'; |
| 21 | exit 1; |
| 22 | } |
| 23 | socket="$(cat "$tmp")"; |
| 24 | rm -f "$tmp"; |
| 25 | |
| 26 | minicom -c on -o -D unix#"$socket"; |