Check SNMP from subnet / Prefix IP

 #!/bin/bash


# Mengecek apakah parameter subnet dan komunitas SNMP diberikan

if [ -z "$1" ] || [ -z "$2" ]; then

  echo "Usage: $0 <subnet> <community>"

  exit 1

fi


# Menampilkan informasi pemindaian

echo "Memulai pemindaian di subnet $1 dengan community string $2"

echo "+-------------------+---------------------------+--------------------------------+"

echo "| IP Address        | sysName                   | sysDescr                       |"

echo "+-------------------+---------------------------+--------------------------------+"


# Fungsi untuk memeriksa SNMP hanya sysDescr dan sysName

check_snmp() {

  ip=$1

  community=$2


  # Ambil sysDescr dengan timeout yang lebih cepat (1 detik) dan hanya mengambil informasi yang dibutuhkan

  sysDescr=$(snmpwalk -v 2c -c $community -r 1 -t 1 $ip 1.3.6.1.2.1.1.1 2>/dev/null | awk -F "STRING: " '{print $2}')


  # Ambil sysName dengan cara yang sama

  sysName=$(snmpwalk -v 2c -c $community -r 1 -t 1 $ip 1.3.6.1.2.1.1.5 2>/dev/null | awk -F "STRING: " '{print $2}')


  # Jika SNMP aktif dan sysDescr ditemukan, tampilkan hasilnya

  if [ ! -z "$sysDescr" ]; then

    # Menampilkan hasil dalam format tabel menggunakan printf

    printf "| %-17s | %-25s | %-30s |\n" "$ip" "$sysName" "$sysDescr"

  fi

}


export -f check_snmp


# Mendapatkan subnet dan komunitas SNMP dari parameter yang diberikan

subnet=$1

community=$2


# Loop untuk semua alamat IP dalam subnet, hanya yang merespons

fping -a -g $subnet -q 2>/dev/null | parallel -j 50 check_snmp {} $community


# Menutup garis pemisah

echo "+-------------------+---------------------------+--------------------------------+"