次のスクリプトが論理的な方法で次のことを達成できるかどうか疑問に思います。
デバイスの既存のIPアドレス(存在する場合)が正しいかどうかをユーザーに尋ねます。既存のアドレスを一覧表示し、ユーザーが選択できるようにする必要があります。例えば
eth0 127.0.0.1 eth1 168.21.51.23 etc
ユーザーがオプション1を拒否した場合は、割り当てるIPアドレスをユーザーに要求します。
そうでなく、ユーザーが既存のIPアドレスを拒否したり入力を提供したりしない場合、スクリプトはシステムに192.168.81.23などの事前定義されたデフォルトのIPアドレスを入力します。
次のスクリプトは、私が作成しようとしているより大きなプログラムの一部になります。上記の要件を満たすために、次のスクリプトを使用しようとしましたが、いくつかの構文エラーがあります。
#!/bin/bash
getinfo
echo "Obtain the static IP address"
read -p "Is it an Existing address/User input/NIL? (E/U/N)" interface
echo ""
case $interface in
[Ee]* ) exist_addr ;;
[Uu]* ) user_supply ;;
[Nn]* ) default;;
* ) echo "Please enter Existing, User or Nil!" ;;
esac
}
exist_addr()
{
#calling earlier script for listing existing interfaces
./get_addr
read -p "Confirm the existing address settings correct? (y/n)" reply
case $reply in
[Yy]* ) ./scriptfornextstepoftheprogram ;;
[Nn]* ) getinfo ;;
* ) echo "Please enter Yes or No!" ;;
esac
}
user_supply()
{
read -p "Enter the IP address for the network interface" supplied_IP
echo ""
read -p "Is the IP address entered correct? (y/n)" yn
case $yn in
#when yes I input the ip address to the interface
[Yy]* ) ip address add $supplied_IP dev eth1 ;;
[Nn]* ) getinfo ;;
* ) echo "Please enter Yes or No!" ;;
esac
}
default()
{ read -p "Enter he default predefined IP address" default_IP
echo ""
read -P "Is this the predefined IP address? (y/n)" yn
case $yn in
[Yy]* ) ip address add $default_IP dev enp0s3 ;;
[Nn]* ) getinfo ;;
* ) echo "Please enter Yes or No!" ;;
esac
}
exit 1
スクリプトは目標を正しく達成しますか?
答え1
以下のスクリプトが論理的な方法で以下を達成できるかどうかを知りたいです。
いいえ。最初のステートメントで使用されている参照コマンドまたは関数が欠落しており、最初の質問の直後に失敗する構文エラーがあります。コードを貼り付けると確認できます。https://shellcheck.net/またはコードを実行してみてください。
スクリプトは目標を正しく達成しますか?
最初のような質問ですが、答えはまだ「いいえ」です。