diff --git a/README.md b/README.md index f187d71..486dabe 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,21 @@ # Tab Sorcery -This is still under development and will eventually cover more variables and connection types. +A helpful script for simplifying connections to servers and devices on your network. ## To use: Add the script as a source file in your shell prompt, such as a line similar to this: -```. $HOME/git/tab-sorcery/tab-sorcery.sh example.com 127.0.0.1``` -The arguments in the example show the domain to scan for hostnames, and the IP address of the name server providing them. -Once done, all hostnames in the DNS zone should be available for SSH by a tab-completable alias of just the hostname. +``` +. $HOME/git/tab-sorcery/tab-sorcery.sh example.com 127.0.0.1 bob.user +``` + +Arguments are: +``` +Scan Domain (example.com) +Nameserver address (127.0.0.1) +Default username (bob.user) +``` + +Once done, all hostnames in the DNS zone should be available for SSH/Telnet/RDP by a tab-completable alias of just the hostname (in new shell sessions). diff --git a/tab-sorcery.sh b/tab-sorcery.sh old mode 100755 new mode 100644 index 6dcd78e..a956b8f --- a/tab-sorcery.sh +++ b/tab-sorcery.sh @@ -3,13 +3,35 @@ # ARGUMENTS: # $1 == Domain to scan # $2 == Nameserver to do the zone transfer from +# $3 == Default username for connections scan_domain=$1 scan_ns=$2 -dig skyfall.gear @$scan_ns AXFR | egrep -v 'SOA|NS|MX|DiG' | grep $scan_domain | awk '{print $1,$5}' > /tmp/.tab-sorcery -for i in `awk -F. '{print $1}' /tmp/.tab-sorcery`; do alias $i="ssh `grep $i /tmp/.tab-sorcery | awk '{print $2}'`"; done -\rm -f /tmp/.tab-sorcery +zone_xfer=`dig $scan_domain @$scan_ns AXFR | egrep -v 'SOA|NS|MX|DiG' | grep $scan_domain | awk '{print $1,$4,$5}'` +for host in `echo $zone_xfer | awk '{print $1}'`; do + user_name=$3 + connect_cmd="ssh -t" + host_short=`echo ${host} | awk -F. '{print $1}'` + if echo $zone_xfer | grep $host | grep TXT; then + if [ "`echo $zone_xfer | grep $host | grep TXT | awk '{print $3}'`" = '"lxc"' ]; then + user_name="root" + host_ip=`echo $zone_xfer | grep ${host} | grep A | awk '{print $3}'` + alias ${host_short}="${connect_cmd} ${user_name}@${host_ip}" + elif [ "`echo $zone_xfer | grep $host | grep TXT | awk '{print $3}'`" = '"windows"' ]; then + connect_cmd="rdesktop -g 1600x900" + host_ip=`echo $zone_xfer | grep ${host} | grep A | awk '{print $3}'` + alias ${host_short}="${connect_cmd} -u ${user_name} ${host_ip}" + elif [ "`echo $zone_xfer | grep $host | grep TXT | awk '{print $3}'`" = '"cisco"' ]; then + connect_cmd="telnet" + host_ip=`echo $zone_xfer | grep ${host} | grep A | awk '{print $3}'` + alias ${host_short}="${connect_cmd} ${host_ip}" + fi + else + host_ip=`echo $zone_xfer | grep $host | grep A | awk '{print $3}'` + alias ${host_short}="${connect_cmd} ${user_name}@${host_ip}" + fi >/dev/null +done return 0