Kod Adı: CentOS Stream IP Değiştirme Kod Yüklenecek Konum: /home/network.sh Çalıştırılıcak Program: /bin/bash Çalıştırılıcak Komut: -c 'cd /home;chmod 777 network.sh;./network.sh' Kod Türü: IP Adresi Kod: #!/bin/bash # Netmask'ı CIDR'e çeviren küçük fonksiyon netmask_to_cidr() { local netmask=$1 local cidr=0 IFS=. read -r i1 i2 i3 i4 <<< "$netmask" for i in $i1 $i2 $i3 $i4; do while [ $i -gt 0 ]; do cidr=$((cidr+($i%2))) i=$((i/2)) done done echo "$cidr" } # İlk gerçek ağ arayüzü adını belirle (lo hariç) name=$(ls /sys/class/net | grep -E '^(e|en|eth|eno|ens|wl)' | grep -v '^lo$' | head -n 1) # Eğer ağ arayüzü bulunamazsa hata ver if [[ -z "$name" || "$name" == "lo" ]]; then echo "Hata: Kullanılabilir ağ arayüzü bulunamadı!" exit 1 fi # NetworkManager'daki bağlantı adını bul nmcli_name=$(nmcli -t -f NAME,DEVICE connection show | grep ":$name$" | awk -F: '{print $1}') # Eğer bağlantı bulunamazsa otomatik oluştur if [[ -z "$nmcli_name" ]]; then echo "Uyarı: $name için bağlantı bulunamadı, yeni bağlantı oluşturuluyor..." nmcli connection add type ethernet ifname "$name" con-name "$name" autoconnect yes sleep 1 nmcli_name="$name" fi echo "Bağlantı Adı: $nmcli_name" # iplist değişkeni dışarıdan gelmeli iplist="{iplist}" # iplist'i ayır ve diziye çevir iplist=(${iplist//-/ }) # Eğer iplist boşsa çık if [[ ${#iplist[@]} -eq 0 ]]; then echo "Hata: IP listesi boş!" exit 1 fi # Önce mevcut tüm IP adreslerini temizleyelim nmcli connection modify "$nmcli_name" -ipv4.addresses "" # İlk IP'yi ana IP olarak ekleyeceğiz ipdata=(${iplist[0]//x/ }) cidr=$(netmask_to_cidr "${ipdata[2]}") echo "Ana IP atanıyor: ${ipdata[0]}/${cidr} Gateway: ${ipdata[1]}" nmcli connection modify "$nmcli_name" ipv4.addresses "${ipdata[0]}/$cidr" nmcli connection modify "$nmcli_name" ipv4.gateway "${ipdata[1]}" nmcli connection modify "$nmcli_name" ipv4.dns "8.8.8.8 8.8.4.4" nmcli connection modify "$nmcli_name" ipv4.method manual # Ek IP'leri ekleyelim counter=1 while [ $counter -lt ${#iplist[@]} ]; do ipdata=(${iplist[$counter]//x/ }) cidr=$(netmask_to_cidr "${ipdata[2]}") echo "Ek IP ekleniyor: ${ipdata[0]}/${cidr}" nmcli connection modify "$nmcli_name" +ipv4.addresses "${ipdata[0]}/$cidr" counter=$((counter+1)) done # Bağlantıyı kapatıp tekrar aç nmcli connection down "$nmcli_name" || true nmcli connection up "$nmcli_name" # Geçici script dosyasını sil (varsa) rm -f /home/network.sh