사용자 입력을 읽고 파일로 출력

사용자 입력을 읽고 파일로 출력

/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

관련 정보