读取用户输入,然后输出到文件

读取用户输入,然后输出到文件

我想在 /etc/sysconfig/network-scripts/ 中创建一个 ifcfg 文件,然后创建一个读取用户输入并将其输出到 ifcfg 文件的脚本

示例行将类似于:

Onboot: Yes or No(输入yes或no)

然后它会输出“Onboot=Yes”

之后它将输出并将其写入新的 ifcfg 文件

它还只有常规输入,例如要求输入“ipaddr”时

如果你能帮我开始,然后我就可以从那里开始。我们将不胜感激所有帮助。

答案1

这是一个开始的脚本。
它采用port nameas 输入,因为ifcfg文件与端口名称匹配,因此如果提供的端口名称无效,则会抛出错误。
此外,您还可以添加更多选项来添加IPADDRDEVICE等,如果 ifcfg 文件中存在这些选项,则这些选项将被替换为提供的新值,否则它将被附加到文件中。

#!/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不是yes/ no,则抛出错误,如果IPADDR传递无效,则抛出错误等。但是,我将其留给您根据您的要求。

相关内容