#!/usr/bin/env sh # ARGUMENTS: # $1 == Domain to scan # $2 == Nameserver to do the zone transfer from # $3 == Default username for connections scan_domain=$1 scan_ns=$2 # Static Configuration (Do not edit) dns_time=4 dns_tries=1 #icmp_fail_text="$(tput bold)Tab Sorcery: $(tput setaf 1)ICMP connection to ${scan_ns} failed!$(tput sgr0)" dns_fail_text="$(tput bold)Tab Sorcery: $(tput setaf 1)DNS connection to ${scan_ns} failed!$(tput sgr0)" # Check for and set RDP geometry config case "$SORC_GEOM_RDP" in [0123456789]*x*[0123456789]) geom_rdp=$SORC_GEOM_RDP;; *) geom_rdp='1600x900';; esac # Check for a plain text password files for Windows hosts # (Disclaimer: This is highly insecure and unrecommended.) case "$SORC_PASS_FILE" in [~$/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*) pass_file=$SORC_PASS_FILE;; *) pass_file=/dev/null;; esac get_hostip () { #host_ip=`echo $zone_xfer | grep ${host} | grep A | awk '{print $3}'` host_ip=`echo $zone_xfer | grep $1 | grep A | awk '{print $3}'` } ##Check network #if ! ping -c1 -t3 $scan_ns >/dev/null 2>&1 #then # echo $icmp_fail_text >&2 # return 1 #fi zone_xfer=`{dig $scan_domain @$scan_ns +time=$dns_time +tries=$dns_tries AXFR || echo $dns_fail_text >&2} | grep -Ev 'SOA|NS|MX|DiG' | grep $scan_domain | awk '{print $1,$4,$5}'` while read host <&3; 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}'`" = '"logroot"' ]; then user_name="root" get_hostip ${host} alias ${host_short}="${connect_cmd} ${user_name}@${host_ip}" elif [ "`echo $zone_xfer | grep $host | grep TXT | awk '{print $3}'`" = '"windows"' ]; then if [ -f $pass_file ]; then if pass_line=`grep $host_short $pass_file`; then winpass=`awk -F= '{print $2}' <<< "$pass_line"` connect_cmd="rdesktop -g $geom_rdp -p $winpass" else connect_cmd="rdesktop -g $geom_rdp" fi else connect_cmd="rdesktop -g $geom_rdp" fi get_hostip ${host} 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" get_hostip ${host} alias ${host_short}="${connect_cmd} ${host_ip}" fi else get_hostip ${host} alias ${host_short}="${connect_cmd} ${user_name}@${host_ip}" fi >/dev/null done 3< <(echo $zone_xfer | awk '{print $1}' | uniq) unset -f get_hostip return 0