ユーザーにネットワークの詳細を要求するスクリプトを作成し、Ubuntu 20.04で実装するにはどうすればよいですか?

ユーザーにネットワークの詳細を要求するスクリプトを作成し、Ubuntu 20.04で実装するにはどうすればよいですか?

2つのスクリプトが必要です。 1 つ目はネットワーク情報を収集し、2 つ目はその情報を使用してネットワーク計画構成を作成して適用します。シェルスクリプトだけを使ってこれを達成したいと思います。

スクリプトは、IP、サブネット、またはCIDR、ゲートウェイ、および2つのDNSサーバーIPのみを要求する必要があります。同時に、ユーザーが入力した情報を検証する必要があります。

2番目のスクリプトはnetplanエンコーディングを生成することです。これは、ネットワークを構成するために使用できるyamlファイルで、以下で収集されます。Ubuntu 20.04 LTSで静的IPアドレスを割り当てる方法 - LinuxTechi。サンプルファイル、

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"

まだ作業中ですが、詰まってきちんとやっているかわかりません。

ベストアンサー1

#!/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

おすすめ記事