ユーザー入力を読み、ファイルに出力

ユーザー入力を読み、ファイルに出力

/etc/sysconfig/network-scripts/にifcfgファイルを生成し、ユーザー入力を読み取り、それをifcfgファイルに出力するスクリプトを作成したいと思います。

例行は次のとおりです。

Onboot:はいまたはいいえ(はいまたはいいえ入力)

すると「Onboot=Yes」が出力されます。

その後、出力され、新しいifcfgファイルに書き込まれます。

また、「ipaddr」を要求する場合など、通常の入力のみが可能です。

私が始めるのを手伝ってくれたら、そこから始めましょう。すべての助けをいただきありがとうございます。

ベストアンサー1

これは起動スクリプトです。ファイルがポート名と一致するため、入力として
使用されるため、指定されたポート名が無効な場合はエラーが発生します。さらに、追加などのオプションを追加できます。これらのオプションがifcfgファイルにある場合は、指定された新しい値に置き換えられ、それ以外の場合はファイルに追加されます。 port nameifcfg
IPADDRDEVICE

#!/usr/bin/bash

function usage() {
    echo "Usage:"
    echo "$0 <port-name>"
}

function input_to_file() {
    param=$1
    value=$2
    portname=$3
    ifcfgfile="/etc/sysconfig/network-scripts/ifcfg-$portname"
    echo $param=$value
    grep -q "^$param=" $ifcfgfile && sed "s/^$param=.*/$param="$2"/" -i $ifcfgfile ||
    echo $param="$value" >> $ifcfgfile
}

if [[ $# -lt 1 ]]; then
    usage;
    exit 1;
fi

portname=$1

# Validate the port-name passed
ifconfig $portname &> /dev/null
if [[ $? -ne 0 ]]; then
    echo "Invalid port name passed"
    exit 1
fi    

ifcfgfile="/etc/sysconfig/network-scripts/ifcfg-$portname";
# Create file if not present for a valid port. This is actually not required if you are creating file prior to running script.
if [ ! -f $ifcfgfile ]; then
    touch $ifcfgfile
fi

echo -n "ONBOOT=[yes/no]: ";
param="ONBOOT"
read value
input_to_file $param $value $portname

このスクリプトに対するさらなる改善は、入力を検証します。たとえば、値が/ONBOOTでない場合はエラーが発生し、無効な場合はエラーが発生します。ただし、ご要望に応じてお預かりいたします。yesnoIPADDR

おすすめ記事