Bash

如何製作腳本以向使用者詢問網路詳細資訊然後在 Ubuntu 20.04 中應用這些腳本?

  • June 7, 2020

我需要兩個腳本,一個用於收集網路資訊,另一個用於使用該資訊創建和應用網路計劃配置。我想只使用 shell 腳本來實現這一點。

該腳本應該簡單地詢問 IP、子網或 CIDR、網關和 2 個 DNS 伺服器 IP。同時,它應該驗證使用者輸入的資訊。

第二個腳本是創建一個netplan 編碼。這是一個 yaml 文件,可用於配置網路,收集自如何在 Ubuntu 20.04 LTS - LinuxTechi 上分配靜態 IP 地址。範例文件,

network:
 ethernets:
   enp0s3:
     addresses: [192.168.1.3/24]
     gateway4: 192.168.1.1
     nameservers:
       addresses: [4.2.2.2, 8.8.8.8]
 version: 2

這可以做到嗎?有人可以幫忙嗎?我想用它來自動安裝Ubuntu 20.04

以下是我正在做的事情,我知道它並不完整,並且可能是一種非常錯誤的做法,但這就是我需要幫助的原因:P

  • -殼
#!/bin/bash
nmcli device status | awk '{print $1}' | sed '1d' | sed '$d' > /tmp/itic-ls-networks
echo "None" >> /tmp/itic-ls-networks
sum3="cat /tmp/itic-ls-networks"

           nmcli device status | awk '{print $1}' | sed '1d' | sed '$d' | wc -l > /tmp/itic-total-networks
           sum1=$(cat /tmp/itic-total-networks)
           sum2=`expr $sum1 + 1`

           var1=1
           for sum2 in $var1
           do 
               nmcli device status | awk '{print $1}' | sed '1d' | sed '$d' | sed 's/^/ '$var1')     /' >> /tmp/itic-networks
           done
Please enter the IP Address
read itic-ip-cidr
num = `expr match $itic-ip-cidr [.]`
if num != 3
then
   echo "please enter the correct IP v4 address & the CIDR Value"

我仍在努力,我被困得非常糟糕,不知道我是否做對了。

#!/bin/bash

echo -n "Enter IP Address: "
read ip
valid_ip=0
if [[ "$ip" =~ ^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ ]]; then
       echo "Valid IP: $ip";
       valid_ip=1;
else
       echo "Invalid IP: $ip";
fi

echo -n "Read CIDR: "
read cidr
valid_cidr=1
if [[ "$cidr" =~ ^[0-9]+$ && "$cidr" -le 32 ]]; then
   echo "Valid CIDR: $cidr";
   valid_cidr=1;
else
   echo "Invalid CIDR: $cidr";
fi

#If both are valid, print them out in the form ip/cidr
if [[ "$valid_ip" -eq 1 && $valid_cidr -eq 1 ]]; then
  echo "Valid"
  echo "$ip/$cidr"
fi

網關和 DNS 與 IP 相同,只是在一個新變數中。

獲得所有變數後,為 netplan 部分列印 yaml 文件就很容易了。


從這裡獲取 IP 的正則表達式,https://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp

引用自:https://unix.stackexchange.com/questions/587875