| Here’s my automated scanning script. It’s got a few dependencies but will run with a number of threads and will output to a defined folder.
 #!/bin/bash#__________________________________________________________ # Author:     phillips321 forum.gnacktrack.co.uk
 # License:    CC BY-SA 3.0
 # Use:        Update several applications
 # Released:   www.gnacktrack.co.uk
 version=1.0
 # Dependencies:
 #                       nmap
 #                       sslscan
 #                       gnome-web-photo
 #                       arp-scan
 # debian users can apt-get install nmap sslscan gnome-web-photo arp-scan
 #
 # ToDo:
 #                       Delete WeakCiphers if it doesnt contain any weak ciphers
 #                       Use watch instead of looping a #process left message
 #                       Use a nice output to show status of scans and what has been complete
 #                       Allow changing of THREADS on fly by reading THREADS from file
 #___________________________________________________________
 f_uservariables(){CUSTOMPORTS="21,22,23,80,443,445,3389"  #seperate with a comma e.g. CUSTOMPORTS="21,22,23,80,443,445,3389"
 NMAPSTRING="nmap -sS -vv -d -A -P0 -n -r -oA"
 }
 f_usage(){              #outputs usage information
 echo"MESSAGE: matts-nmap.sh ${version}"
 echo"MESSAGE: Usage: `basename ${0}` [threads max = 99] [big/small/both/custom] [directory]"
 echo"MESSAGE: # `basename ${0}` 5 small VLANxyz"
 echo"MESSAGE: if scan size not given i will scan all ports"
 echo"MESSAGE: if directory is not given then I will write to ./devices/"
 echo"MESSAGE:"
 }
 f_yesorno(){    #returns 1 if yes is selected
 read-e CONFIRM
 case$CONFIRMin
 y|Y|YES|yes|Yes)
 return 1 ;;
 *)
 return 0 ;;
 esac
 }
 f_rootcheck(){  #checks for root and exits if not
 if[`echo-n$USER`!= "root"]
 then
 echo"MESSAGE: matts-nmap.sh ${VERSION}"
 echo"MESSAGE: ERROR: Please run as root!"
 echo"MESSAGE:"
 exit 1
 fi
 }
 f_threadcheck(){        #checks input for num of threads
 if[-z${1}]
 then
 f_usage
 exit 1
 fi
 THREADS="`echo "${1}" | tr -cd ‘[:digit:]‘ | cut -c 1-2`"
 }
 f_scansizecheck(){      #checks input for type of scan
 if[${1} = "big"  ]||[${1} = "small"]||[${1} = "both"]||[${1} = "custom"]
 then
 SIZETYPE="`echo "${1}" | tr -cd ‘[:alnum:]‘ | cut -c 1-6`"
 echo"MESSAGE: performing a ${SIZETYPE} scan"
 else
 SIZETYPE="both"
 echo"MESSAGE: no scan size given or its invalid so scan size will be both(small and big)."
 fi
 }
 f_directorycheck(){     #checks input for directory name to save to
 if[-z${1}]
 then
 DIRECTORY="devices"
 echo"MESSAGE: no dir given so outputting to ${DIRECTORY}"
 else
 DIRECTORY="`echo "${1}" | tr -cd ‘[:graph:]‘`"
 echo"MESSAGE: output dir = ${DIRECTORY}"
 fi
 }
 f_outputtargets(){      #cats targets.txt to screen
 echo"MESSAGE: targets.txt contents:"
 cat targets.txt
 echo"MESSAGE: end of IPs/Hosts"
 }
 f_arpscansubnet(){      #arpscans local subnet
 arp-scan -l-g|grep . |cut-f1|grep-v packets |grep-v Interface |grep-v Ending |grep-v Starting > targets.txt
 }
 f_findtargetstxt(){     #checks for targets.txt and offer to create
 if[-f ./targets.txt ]
 then
 echo"MESSAGE: targets.txt file located"
 f_outputtargets
 else
 echo-n"MESSAGE: there is no targets.txt file so do you want me to create one? yes/no : "
 f_yesorno &&exit 0
 echo"MESSAGE: Now arp-scanning current subnet"
 f_arpscansubnet
 echo"MESSAGE: We found `cat targets.txt | wc -l` targets and have output them to targets.txt"
 f_outputtargets
 echo-n"MESSAGE: Do you wish to edit this list? (DELETE YOURSELF!)yes/no : "
 f_yesorno &&echo"MESSAGE: Chose not to edit…..continue with scan"||nano targets.txt ; f_outputtargets
 fi
 }
 f_numberoftargets(){#counts number of targets in targets.txt
 NUMBER=`wc-l targets.txt`
 COUNT=0
 echo"MESSAGE: Found ${NUMBER} targets to scan"
 }
 f_createdirectory(){#makes the directory
 STARTDIR=`pwd`
 mkdir"${STARTDIR}/${1}"
 cp targets.txt ${STARTDIR}/${1}/.
 }
 f_nmapscans(){  #performs loops of nmap scans
 echo"MESSAGE: Starting Scan with ${THREADS} threads"
 for i in`cat targets.txt`
 do
 TARGET=${i}
 LOC=${DIRECTORY}/${TARGET}
 ((COUNT++))
 echo"MESSAGE: now scanning ${TARGET}${COUNT} of ${NUMBER}"
 case${SIZETYPE}in
 small) xterm -title"${TARGET} small TCP"-e"${NMAPSTRING}${LOC}.small.tcp ${TARGET}"&;;
 both) xterm -title"${TARGET} small TCP"-e"${NMAPSTRING}${LOC}.small.tcp ${TARGET}"&
 xterm -title"${TARGET} big TCP"-e"${NMAPSTRING}${LOC}.big.tcp -p1-65535 ${TARGET}"&;;
 big) xterm -title"${TARGET} big TCP"-e"${NMAPSTRING}${LOC}.big.tcp -p1-65535 ${TARGET}"&;;
 custom) xterm -title"${TARGET} custom TCP"-e"${NMAPSTRING}${LOC}.custom -p${CUSTOMPORTS}${TARGET}"&;;
 esac
 xterm -title"${TARGET} UDP"-e"nmap -sU -vv -d -P0 -n -r -oA ${LOC}.small.udp ${TARGET}"&
 while[`ps-Aef–cols 200 |grep${DIRECTORY}|grep xterm |wc -l`-ge${THREADS}]
 do
 sleep 5
 done
 sleep 5
 done
 while[`ps-Aef–cols 200 |grep${DIRECTORY}|grep xterm |wc -l`-gt 0 ]
 do
 echo MESSAGE: `ps-Aef–cols 200 |grep${DIRECTORY}|grep xterm |wc -l`nmaps still running
 sleep 10
 done
 echo"MESSAGE: NMap Scanning Complete"
 }
 f_amapscans(){
 cd"${STARTDIR}/${DIRECTORY}"
 for i in`ls*.gnmap |sed-e"s/.gnmap//"`
 do
 xterm -title"${i} AMAP"-e"amap -i ${i}.gnmap -o ${i}.amap | tee -a amap_full.txt"&
 echo"MESSAGE: now amaping ${i}"
 while[`ps-Aef–cols 200 |grep AMAP |grep xterm |wc -l`-ge${THREADS}]
 do
 sleep 1
 done
 sleep 5
 done
 while[`ps-Aef–cols 200 |grep AMAP |grep xterm |wc -l`-gt 0 ]
 do
 echo MESSAGE: `ps-Aef–cols 200 |grep AMAP |grep xterm |wc -l`amaps still running
 sleep 10
 done
 cat amap_full.txt |cut-d" " -f3,4,5 |grep matches |sort-n|uniq> amap.txt
 cat amap.txt |grep http |cut-d"/"-f 1 |sort|uniq> amap.http.txt
 cat amap.txt |grep ssl |cut-d"/"-f 1 |sort|uniq> amap.ssl.txt
 cd"${STARTDIR}/.."
 echo"MESSAGE: Amaping Complete"
 sleep 5
 }
 f_sslscans(){
 cd"${STARTDIR}/${DIRECTORY}"
 if[-s amap.ssl.txt ]
 then
 cat amap.ssl.txt
 for i in`cat amap.ssl.txt`
 do
 SSLOUT="`echo "${i}" | sed -e s/:/_/g`"
 echo"MESSAGE: now sslscanning ${i} and outputting as ${SSLOUT}.sslscan.txt"
 xterm -title"${i} SSLSCAN"-e"sslscan –no-failed ${i} | tee ${SSLOUT}.sslscan.txt ; sleep 5"&
 while[`ps-Aef–cols 200 |grep SSLSCAN |grep xterm |wc -l`-ge${THREADS}]
 do
 sleep 2
 done
 sleep 5
 done
 while[`ps-Aef–cols 200 |grep SSLSCAN |grep xterm |wc -l`-gt 0 ]
 do
 echo MESSAGE: `ps-Aef–cols 200 |grep SSLSCAN |grep xterm |wc -l`sslscans still running
 sleep 10
 done
 cat*.sslscan.txt |grep"Testing\ SSL\|Accepted\|ERROR"|grep"SSLv2\|Testing\|\ 40\|\ 56"|grep-v"ERROR"> WeakCiphers.txt
 echo"MESSAGE: Auto SSLSCAN Complete"
 else
 echo"MESSAGE: sslscan will not run – no ssl ports found using amap"
 fi
 sleep 5
 cd"${STARTDIR}/.."
 
 }f_gwp(){
 cd"${STARTDIR}/${DIRECTORY}"
 if[-s amap.ssl.txt ]
 then
 cat amap.ssl.txt
 for i in`cat amap.ssl.txt`
 do
 HTTPOUT="`echo "${i}" | sed -e s/:/_/g`"
 echo"MESSAGE: now taking photo of https://${i} and outputting as ${HTTPOUT}.png"
 xterm -title"${i} GNOME-WEB-PHOTO"-e"gnome-web-photo -m photo -f –format=png https://${i}${HTTPOUT}.png"&
 while[`ps-Aef–cols 200 |grep GNOME |grep xterm |wc -l`-ge${THREADS}]
 do
 sleep 5
 done
 sleep 5
 done
 else
 echo"MESSAGE: gnome-web-photo will not run – no https ports found using amap"
 fi
 if[-s amap.http.txt ]
 then
 cat amap.http.txt
 for i in`cat amap.http.txt`
 do
 HTTPOUT="`echo "${i}" | sed -e s/:/_/g`"
 echo"MESSAGE: now taking photo of http://${i} and outputting as ${HTTPOUT}.png"
 xterm -title"${i} GNOME-WEB-PHOTO"-e"gnome-web-photo -m photo -f –format=png ${i}${HTTPOUT}.png"&
 while[`ps-Aef–cols 200 |grep GNOME |grep xterm |wc -l`-ge${THREADS}]
 do
 sleep 5
 done
 sleep 5
 done
 else
 echo"MESSAGE: gnome-web-photo will not run – no http ports found using amap"
 fi
 while[`ps-Aef–cols 200 |grep GNOME |grep xterm |wc -l`-gt 0 ]
 do
 echo MESSAGE: `ps-Aef–cols 200 |grep GNOME |grep xterm |wc -l`screenshots still running
 sleep 10
 done
 sleep 5
 cd"${STARTDIR}/.."
 }
 f_cleanup(){
 cd"${STARTDIR}/${DIRECTORY}"
 for i in`ls*.png`
 do
 iSIZE=`stat-c%s ${i}`
 if[${iSIZE}-eq"469"]
 then
 echo"MESSAGE: Deleting file: ${i} as it is ${iSIZE} bytes"
 rm${i}
 fi
 done
 }
 f_displayresults(){
 cd"${STARTDIR}/${DIRECTORY}"
 cat*p.nmap |grep"scan\ report\ for\|Interesting\|open\|———————————————"|grep-v"OSScan"|grep-v"filtered"> open_ports.txt
 xterm -title"OpenPorts from ${DIRECTORY}"-e"grep -E –color=always ‘.*(ssh|rdp|ssl|http|telnet|https|sslv2|mail|smtp|snmp|oracle|sql|tnls|ftp|sftp).*|’ open_ports.txt | less -R"&
 if[-s WeakCiphers.txt ]
 then
 xterm -title"WeakCiphers from ${DIRECTORY}"-e"less -R WeakCiphers.txt"&
 else
 echo"No weak ciphers found"> WeakCiphers.txt
 echo"MESSAGE: no weak ciphers found"
 fi
 cd"${STARTDIR}/.."
 }
 f_uservariablesf_threadcheck ${1}
 f_scansizecheck ${2}
 f_directorycheck ${3}
 f_findtargetstxt
 f_numberoftargets
 f_createdirectory ${DIRECTORY}
 f_nmapscans             #comment me out to skip nmap scans
 f_amapscans             #comment me out to skip amap scans
 f_sslscans              #comment me out to skip ssl scans
 f_gwp                   #comment me out to skip web screenshots
 f_cleanup
 f_displayresults
 exit0
 
 |