Kod Adı: CentOS 7 Kurulum Kod Yüklenecek Konum: /home/setup.sh Çalıştırılıcak Program: /bin/bash Çalıştırılıcak Komut: -c 'cd /home;chmod 777 setup.sh;./setup.sh' Kod Türü: Kurulum Kod: #!/bin/bash # Netmask'ı CIDR'e çeviren 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" } # Değişkenler hostname="{hostname}" password="{password}" iplist="{iplist}" # IP yapılandırması (NetworkManager uyumlu) function configureNetworkManager() { # İlk gerçek ağ arayüzü adını bul (lo hariç) name=$(ls /sys/class/net | grep -E '^(e|en|eth|eno|ens|wl)' | grep -v '^lo$' | head -n 1) if [[ -z "$name" || "$name" == "lo" ]]; then echo "Hata: Kullanılabilir ağ arayüzü bulunamadı!" exit 1 fi # Bağlantı adını bul nmcli_name=$(nmcli -t -f NAME,DEVICE connection show | grep ":$name$" | awk -F: '{print $1}') 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'i parçala iplist_array=(${iplist//-/ }) if [[ ${#iplist_array[@]} -eq 0 ]]; then echo "Hata: IP listesi boş!" exit 1 fi # Eski IP adreslerini temizle nmcli connection modify "$nmcli_name" -ipv4.addresses "" # İlk IP'yi ana IP olarak ayarla ipdata=(${iplist_array[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 ayarla counter=1 while [ $counter -lt ${#iplist_array[@]} ]; do ipdata=(${iplist_array[$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 aç nmcli connection down "$nmcli_name" || true nmcli connection up "$nmcli_name" } # LVM yapılandırması function configureLVM() { DISK="/dev/sda" PART_NUM="2" PARTITION="${DISK}${PART_NUM}" LV_PATH="/dev/centos_localhost/root" MOUNT_POINT="/" echo "==> growpart ile ${PARTITION} genişletiliyor..." growpart "${DISK}" "${PART_NUM}" echo "==> partprobe ile disk tablosu güncelleniyor..." partprobe "${DISK}" echo "==> pvresize ile $PARTITION genişletiliyor..." pvresize "$PARTITION" echo "==> lvextend ile LVM genişletiliyor..." lvextend -l +100%FREE "$LV_PATH" echo "==> XFS dosya sistemi büyütülüyor..." xfs_growfs "$MOUNT_POINT" echo "==> İşlem tamamlandı!" } # Hostname ve şifre ayarları function configureSystem() { hostnamectl set-hostname "$hostname" echo "root:$password" | chpasswd } # Ana akış configureNetworkManager configureLVM configureSystem echo "CentOS yapılandırma işlemleri tamamlandı. Sistem hazır." rm -f /home/setup.sh