#!/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 "+-------------------+---------------------------+--------------------------------+"
By Niammuddin Mz
January 02, 2025