Estou tentando escrever um script bash para configurar várias interfaces de rede e tenho problemas com algumas das NICs obtendo um nome de conexão com fio em vez do nome do dispositivo. Por exemplo
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
ens22 ethernet connected ens22
ens18 ethernet connected Wired connection 2
ens19 ethernet connected ens19
ens20 ethernet connected Wired connection 1
ens21 ethernet connected ens21
lo loopback unmanaged --
O impacto disso é que esses comandos falham porque está esperando o nome da conexão, não o nome do dispositivo:
printf "\n${YELLOW}### Configure ens20: ###${NC}\n"
sudo nmcli con mod ens20 ipv4.addresses 10.70.20.254/24
sudo nmcli con mod ens20 ipv4.dns 8.8.8.8
sudo nmcli con mod ens20 ipv4.method manual
Perguntas:
- O que faz com que apenas algumas das interfaces recebam o nome "Conexão com fio?"
- Existe uma opção no nmcli para usar o nome da interface?
- É possível renomear uma conexão? Tentei renomear o atributo Connection, mas só posso fazê-lo se modificar a conexão, não o dispositivo.
Isso funciona:
sudo nmcli connection modify "Wired connection 2" connection.id "ens18"
Isso não funciona:
sudo nmcli device modify ens18 connection.id "ens18"
Obrigado
Na terminologia do NetworkManager, um dispositivo é a NIC (ou uma abstração virtual de uma), e uma conexão é um conjunto de parâmetros de configuração de rede que podem ser aplicados a qualquer dispositivo adequado , a menos que especificamente restrito para corresponder apenas a um determinado dispositivo. Mesmo que restritos, as conexões e dispositivos são objetos de configuração separados .
1.)
Wired connection <number>
é o formato de nome de conexão padrão usado por algumas ferramentas GUI (incluindo o instalador do RHEL OS), enquanto<interface name>
pode ser o nome padrão usado ao criar uma nova conexão usandonmcli
e não especificando um nome para ela - por exemplo, se você usarnmcli device connect <interface name>
e houver nenhuma definição de conexão existente que possa ser aplicada a essa interface.2.) As únicas maneiras de se referir a uma conexão específica são por seu nome, seu UUID ou por seu número de caminho de conexão D-Bus (
path <N>
for/org/freedesktop/NetworkManager/Settings/<N>
, ouapath <N>
for/org/freedesktop/NetworkManager/ActiveConnection/<N>
).Se você quiser uma maneira rápida de se referir a "qualquer que seja a conexão ativa neste dispositivo", você pode fazer uma função de shell como esta:
Então você poderia usar assim:
Observe que é possível que uma interface de rede não esteja atualmente associada a nenhuma conexão e, nesse caso
$(nm_connection_of <interface name>)
, retornaria um erro.3.) Você já respondeu a esta pergunta.
Para renomear uma conexão, você deve identificar sem ambiguidade a conexão que deseja renomear , não um dispositivo que possa estar associado a qualquer número de conexões possíveis ou sem nenhuma conexão.