#!/bin/bash # Mengecek apakah parameter subnet dan komunitas SNMP diberikan if [ -z "$1" ] || [ -z "$2" ]; then echo "Usage: $0 " 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 "+-------------------+---------------------------+--------------------------------+"