Modifica o arquivo fstab nos servidores [fechado]

0

Plataforma: Linux Bash shell

É necessário modificar apenas a segunda coluna, ou seja, montar pontos do compartilhamento NAS / vol / wrm6 no arquivo / etc / fstab.

NAS1:/vol/wrm6  /archive/net1  NFS default 0 0
NAS2:/vol/wrm6 /archive/06 NFS default 0 0
NAS3:/vol/wrm7 /archive/07 NFS default 0 0
 NAS4:/vol/wrm8 /archive/09 NFS default 0 0

Os caminhos devem ser modificados para ter um sufixo na segunda coluna:

NAS1:/vol/wrm6  /archive/net1_05042018  NFS default 0 0
NAS2:/vol/wrm6 /archive/06_05042018 NFS default 0 0
 NAS3:/vol/wrm7 /archive/07 NFS default 0 0
 NAS4:/vol/wrm8 /archive/09 NFS default 0 0

qualquer diretório que esteja sob /archive/ para compartilhamento NAS / vol / wrm6, inclua _05042018 como /archive/*_05042018 . * significa pode ser qualquer dir.

    
por Nirmal 03.05.2018 / 03:46

2 respostas

1

Isso deve cuidar do que você quer e irá adicionar o _05042018 a todos os diretórios que se encaixam no archive quando eles envolvem o wrm6.

sed -i -E "s/(.*wrm6[[:space:]]+\/archive\/)(.+)([[:space:]]+NFS.*)/_05042018/g" /etc/fstab
    
por 03.05.2018 / 06:27
0

O script a seguir seria

  1. verifique se os novos pontos de montagem realmente existem (e abortam de outra forma),
  2. faça um backup datado do arquivo /etc/fstab existente e, finalmente,
  3. modifique o arquivo /etc/fstab .

Eu recomendaria executá-lo em uma cópia do arquivo fstab algumas vezes para garantir que ele funcione em seu sistema. Basta alterar a variável fstab na parte superior do script para apontar para um arquivo diferente.

O script apenas adiciona um sufixo ao ponto de montagem. Não tenta removê-lo se já houver um aí.

#!/bin/sh

set -e  # terminate on errors (don't remove!)

fstab='/etc/fstab'                    # these could be made command line arguments
device_pattern='^NAS[0-9]:/vol/wrm6'  # but I kept them like this for simplicity
dir_pattern='^/archive/'
suffix='_05042018'

# Check for non-existing mount points
awk -v suf="$suffix" -v dev="$device_pattern" -v dir="$dir_pattern" \
    '$1 ~ dev && $2 ~ dir { print NR, $1, $2 suf }' "$fstab" |
while read lineno device mtpoint; do
    if [ ! -d "$mtpoint" ]; then
        printf 'Mount point "%s" for "%s" is missing on line %d of %s\n' \
            "$mtpoint" "$device" "$lineno" "$fstab" >&2
        #exit 1
    fi
done

# Make backup
bkname="$fstab-backup.$(date +%F_%H%M%S)"
cp "$fstab" "$bkname"

# Modify file
awk -v suf="$suffix" -v dev="$device_pattern" -v dir="$dir_pattern" \
    '$1 ~ dev && $2 ~ dir { $2 = $2 suf } 1' "$bkname" >"$fstab"

echo 'Done.'
echo 'New fstab:'
cat "$fstab"

O "não remova!" comentário é real. Se set -e for removido, o script não será encerrado se um ponto de montagem inválido for encontrado (pelo menos quando executado em bash ou pdksh ).

    
por 03.05.2018 / 22:19