Bash

From DN Wiki
Jump to navigation Jump to search

Random Linux stuff that I'm tired of looking up.

HowTo

Find the subnet given IP and mask or CIDR

ipcalc -n 172.16.16.113 255.255.255.252 | grep Network | awk '{print $2}'
172.16.16.112/30

Pad an IP to make it sortable

echo 172.16.16.112/30 | awk -F '[./]' '{printf "%03d.%03d.%03d.%03d/%03d\n", $1,$2,$3,$4,$5}'
172.016.016.112/030
Date

My preferred date/time format.

  • echo test >> `date +'%Y-%m-%d_%H:%M:%S'`.txt
Command Substitution

Backticks or the other thing I never remember.

  • `ping -c10 -W2 1.1.1.1`
  • $(ping -c10 -W2 1.1.1.1)
Loops
  • for x in 0{1..9} {10..12} ; do mkdir 2016/2016-$x
  • while read LINE; do echo $LINE; done < FILE

Ping Sweep with For Loop

From: https://www.rubyguides.com/2012/02/cli-ninja-ping-sweep/ Linux Ping Sweep

for i in {1..254} ;do (ping -c 1 192.168.1.$i | grep "bytes from" &) ;done

What this does is a for loop from 1 to 254, $i takes the value of the current iteration so in the first one it will be 1 then 2, 3… and so on, then we tell it to call the ping command with the -c option which means only ping once otherwise it would ping forever after that we pipe the output to grep so we only see the hosts that actually responded and the & at the end send it to the background so it will launch all the pings in parallel. If we only want the ip address and not the whole line we can further filter this using cut.