Ler entrada do usuário e, em seguida, enviado para um arquivo

0

Eu quero criar um arquivo ifcfg em / etc / sysconfig / network-scripts / e, em seguida, criar um script que leia a entrada do usuário e a envie para o ifcfg-file

linhas de exemplo serão como:

Onboot: Sim ou Não (eles inserem sim ou não)

e depois será exibido como "Onboot = Yes"

Depois disso, irá imprimir e gravar no novo ifcfg-file

Ele também terá apenas uma entrada regular como quando solicitado a inserir "ipaddr"

Se você puder apenas me ajudar a começar e então eu posso levá-lo de lá. Toda ajuda será muito apreciada.

    
por Burritoboy 04.04.2018 / 12:44

1 resposta

0

Aqui está um script para começar.
Ele recebe o port name como entrada, pois ifcfg arquivos correspondem ao nome da porta, portanto, se o nome da porta fornecido for inválido, ele emitirá um erro.
Além disso, você pode adicionar outras opções para adicionar como IPADDR , DEVICE , etc, que, se presentes no arquivo ifcfg, serão substituídas pelo novo valor fornecido, caso contrário, elas serão anexadas ao arquivo.

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

Um aprimoramento adicional para esse script seria validar as entradas, como se o valor para ONBOOT fosse diferente de yes / no , lançar erro, se IPADDR inválido fosse passado, lançar erro, etc. , Eu deixo para você em suas necessidades.

    
por 06.04.2018 / 12:43