pssh (Parallel-ssh) passando parâmetros diferentes para cada host

3

Eu tenho um arquivo chamado hosts , que se parece com o seguinte:

host1
host2
host3
host4
.....

Nessas máquinas, há também um usuário local chamado como o nome da máquina. host1 user é criado em host1 host e assim por diante.

Existe uma maneira de bloquear todas essas contas de usuário em todas as máquinas?

O que eu usei parece não funcionar corretamente.

pssh -h hosts -l root -i passwd -l hostname |cut -d. -f1

Com este comando, espero bloquear cada conta de usuário correspondente em cada nome de host.

Espero que você entenda o que quero dizer.

Obrigado!

    
por holasz 20.04.2016 / 16:13

2 respostas

2

Compile o comando no host remoto, usando a variável HOSTNAME para determinar o host.

pssh -h hosts -l root -i 'passwd -l "$(hostname)"'

Isso pressupõe que o nome da conta de usuário a ser bloqueada é o que a máquina considera como seu nome. Se você estiver usando apelidos em sua configuração de SSH e desejar usar o apelido no comando, em vez do nome de host real da máquina, ou se o nome do host for diferente do nome do host DNS, use $PSSH_HOST em vez de $(hostname) , mas somente se a configuração do servidor do host remoto permitir a passagem desse nome de variável no ambiente, o que não é o caso, por padrão, em muitos sistemas.

    
por 21.04.2016 / 00:53
-1

pssh lerá seu arquivo ~ / .ssh / config. Se você estiver usando o OpenSSH 5.6+ Você deve especificar seus usuários como opções em seu arquivo de configuração. %h expandirá para o nome do host com o OpenSSH 5.6 e mais recente. Você pode usar este trecho para sempre usar o usuário nomeado após o nome do host com

host*
    User %h

Se todos os seus servidores sempre tiverem usuários com o nome dos hosts que você poderia usar

*
    User %h

Se você estiver usando uma versão mais antiga do OpenSSH (você deve atualizar), você pode especificar manualmente os usuários para os hosts com

host1
    User host1
host2
    User host2
...
    
por 20.04.2016 / 17:07