Este é o prato de comando que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online MAC OS
PROGRAMA:
NOME
prato - ferramenta para administradores de sistemas paralelos de vários hosts
SINOPSE
prato [opção] ... -e comando {-g arquivo_hosts | host_1 host_2 ...}
dip {-g arquivo_hosts | -g "usuário @ host_1 ..."} arquivo_local : remote_file
dip {-g arquivo_hosts | -g "usuário @ host_1 ..."} : remote_file arquivo_local
DESCRIÇÃO
prato - o shell de diligência executa comandos em vários hosts via ssh / rsh / telnet, e também
facilita a distribuição de arquivos por scp / rcp, uma alteração remota de senha, etc. Pode
Processar hosts em modo paralelo.
OPÇÕES
-h Imprimir mensagem de ajuda descrevendo resumidamente todas as opções de linha de comando
-H, --ajuda
Ajuda abrangente, incluindo exemplos
--versão
Imprima a versão do programa e a mensagem de copyright e saia
-V Mostra o número da versão e sai
-C
Diretório de configuração - $ HOME / .dish é o padrão; Neste diretório estão localizados
seguintes arquivos de configuração: 'hosts', 'rests', 'pass' e 'options'. Quando usado,
esta opção deve ser o primeiro argumento na string da linha de comando, ou ser o segundo
um se `-D 'escolhido! Alternativamente, pode-se especificar o diretório de configuração por
definindo a variável de ambiente DISH_CONF.
-CC
O mesmo que `-C 'com fallback para o padrão se a configuração local não for encontrada; Isso significa que,
caso os arquivos 'pass', 'options' ou 'rests' estejam ausentes no diretório fornecido,
mas tais arquivos existem em $ HOME / .dish, o último será considerado. O único
a exceção é '$ HOME / .dish / hosts' que será ignorada. Usar esta opção é
equivalente a mudar o diretório para o escolhido e então executar `dish '.
-c
Programa (apelido "conector") e suas opções usadas para conectar ao controle remoto
host (s) - por exemplo `rsh ', enquanto o processo gerado será" rsh $ host "
Seu conector padrão é `ssh '. Além disso, usando um cliente relevante baseado em texto
como conector, pode-se acessar vários tipos de hosts - switches, bancos de dados e assim
em.
-e
Comando remoto para executar; Também pode ser definido pela variável de ambiente DISH_CMD.
-E
Execute o comando onde também a parte da conexão é especificada, por exemplo, "-E 'ssh $ host
data '"que é igual a" -e data ". Esta opção é incompatível com` -c' e
`-e '. Também pode ser definido pela variável de ambiente DISH_FUEXE.
-t Força a alocação de pseudo-tty em ssh; Isso acontece automaticamente no caso de senha
alterar.
-T
Tempo limite para execução do comando - padrão 30s (por host)
-TT
Tempo limite total para execução do comando - padrão 300s (todos os hosts); Esta opção é
útil apenas quando os hosts são processados em sequência e o tempo total de processamento
não deve exceder o limite superior especificado.
-x
Expressão regular para o prompt do shell; Este valor especifica qual prompt deve ser
esperado no shell do programa após o login em um sistema por `telnet ',` mysql',
`sqlplus 'ou outros clientes de linha de comando interativos (veja` -c'). O valor padrão
é `(% | \ $ | # | \>)? $ '.
-X
Expressão regular para o prompt de senha; Não faz distinção entre maiúsculas e minúsculas com o padrão
valor `Senha: * $ '.
-DE ANÚNCIOS
Expressão regular para o prompt ssh para adicionar uma nova chave de host - `conectando
(sim / não)?. * 'é o padrão
-AC
String com a resposta ao prompt ssh para adicionar uma nova chave de host - `sim 'é o padrão
-g
Arquivo com a lista de hosts / ip's / contas para o destino; O comando será executado em
esses alvos. O arquivo host padrão é '$ HOME / .dish / hosts' - normalmente por linha um
conta do formulário "usuário @ host" (se ssh for sua escolha para o conector). Em ordem de
juntar listas use a opção repetidamente. Alternativamente, a variável de ambiente
DISH_HOSTS pode ser usado para definir os hosts de destino, enquanto na string especificada
eles devem ser separados por espaços em branco. Combinando esta opção com `-r 'ou` -i' você
pode definir vários subconjuntos de hosts / contas de destino.
-r
Arquivo com a lista de hosts / contas em repouso a serem excluídos; O padrão é
'$ HOME / .dish / rests'. Um "hospedeiro em repouso" significa aquele que será excluído do
alvos. A lista de hosts em repouso ou o nome do arquivo pode ser especificado também pelo
variável de ambiente DISH_RESTS.
-i
Arquivo com lista de hosts / contas para sobrepor aos hosts de destino; Não há
arquivo padrão. Apenas hosts sobrepostos, como incluídos nesta lista e no mesmo
tempo definido como metas, será processado.
-u
Nome de usuário - o padrão é seu nome de usuário local; Pode ser definido também pelo
variável de ambiente DISH_USER. Internamente, o valor é acessível pela variável
$ user (ver exemplos). Além disso, é irrelevante no caso de as contas do formulário
"usuário @ host" são processados, pois já incluem o nome do usuário.
-p
Senha de login (-p "" = -pp = -a0) - alias "login autêntico" ou "a0"; Se não
autenticação para login é necessária (nenhum prompt de usuário e senha aparece), então
use `/ dev / null 'como senha. Se o nome de usuário for solicitado, a senha será um
string vazia, então `/ dev / empty 'deve ser fornecido como senha. O valor disso
opção também pode ser um arquivo de senha (veja `-P '). Eventualmente, pode-se definir o
senha pela variável de ambiente DISH_PASS.
-a
Senha adicional para autenticação (-a "" = -aa = -a1) - alias "primeiro
autêntico "ou" a1 "; dentro do processo de geração, se um programa como` smbmount ', `su',
`ssh ', etc. pede autenticação, a senha a1 é passada para ele. Esta senha
também pode ser definido pela variável de ambiente DISH_PASS1.
-A
Mais uma senha para autenticação (-A "" = -AA = -a2) - alias "segundo autêntico"
ou "a2"; Quando um processo gerado, após uma autenticação pela senha a1, pergunta
novamente para uma senha, então a2 é enviado. Esta senha também pode ser definida pelo
variável de ambiente DISH_PASS2.
-n
Nova senha em caso de alteração de senha (-n "" = -nn = -ne)
-p0 Login sem autenticação - o mesmo que `-p / dev / null '
-p1 Defina a senha a1 para ser igual à senha de login; Esta opção não deve ser
usado junto com `-p0 'e` -a1'. Veja o exemplo d) abaixo.
-P
Arquivo com senha (s); O arquivo de senha padrão é '$ HOME / .dish / pass'. Deve ser
legível apenas para o usuário (modo de arquivo 600 ou 700), caso contrário, o programa sai com
erro, mas veja também a próxima opção. Cada linha do arquivo pode conter uma entrada de senha
da forma: "senha: nome de usuário: nome do host", alternativamente
"senha ::: nome de usuário ::: nome do host" ou "senha ;;; nome de usuário ;;; nome do host". Um pode
especificar uma lista de hosts separados por `, 'ou`;' personagens. Expressões regulares
para nomes de host também são permitidos (veja os arquivos de configuração de exemplo no
distribuição).
-m Ignora as permissões de acesso do arquivo de senha
-s [ ]
Processamento sequencial de hosts (modo padrão); Se um intervalo de tempo (medido em
segundos flutuantes) é especificado, então o programa está aguardando este período de tempo
antes de começar a processar o próximo host na sequência.
-F Processos de geração em segundo plano - bifurcação e desconexão; Desta forma, todos os hosts são
processado essencialmente em paralelo! É uma opção muito poderosa - dependendo de você
Tamanho de RAM e utilização de memória, não deve ser um problema processar alguns
centenas de hosts em paralelo. De qualquer forma, tome cuidado - se você tiver muitos hosts
a lista, você pode colocar seu sistema sob carga. O padrão do fundo
processos são redirecionados para '/ dev / null', no entanto, você pode usar `-l 'ou` -L' para escrever
a saída para arquivos. Veja também 'bugs e problemas conhecidos' na página de manual.
-f Processos de Spawn em background sem desconectar do tty; É o mesmo que `-F '
enquanto os stdout's dos processos gerados são enviados para o terminal. Também o
o processo dos pais espera que seus filhos terminem. Veja também 'bugs e problemas conhecidos'
na página de manual.
-q Fique quieto - pule a saída do spawn e faça o login; Ao trabalhar com o shell seguro,
também é conveniente usar `ssh 'com a opção` -q'.
-Q Fique QUIETO - pule qualquer saída
-v Seja prolixo (padrão) - sobrescreve `-q 'e` -Q'
-l
Registrar a saída do comando no arquivo; A saída dos processos gerados é anexada ao
arquivo.
-L
Escreva um log separado para cada host onde denota o nome base do log
Arquivo. O nome completo de um arquivo de log é definido como " _ .registro".
-j Grave o comando invocado em um arquivo de diário com o nome '$ HOME / .dish / journal';
Mantém o histórico dos comandos executados e seu tempo de execução. Um
identificador exclusivo está associado a cada comando.
-J Registre o comando invocado e os processos gerados também; Escreva no
arquivo de diário o comando executado, bem como os processos individuais gerados e seus
hora de execução.
-o
Arquivo com opções de linha de comando passadas para o programa - o padrão é
'$ HOME / .dish / options'; As opções devem ser escritas no arquivo separado - uma por
linha. Por meio deste arquivo, pode-se modificar a configuração padrão: set up fork
modo para ser padrão, alterar o conector padrão e assim por diante. Ao trabalhar em
"modo de cópia", ou seja, invocando o programa como 'dicp', '$ HOME / .dish / options.dicp' é
considerado o arquivo de opções padrão.
-d habilitar a saída de diagnóstico de expect (veja `man expect ')
-D Modo de depuração (dry-run); Imprima variáveis de ambiente, nomes de arquivos de configuração e
comandos para executar e, em seguida, saia. Esta opção deve ser usada como primeira no comando
linha.
EXEMPLOS
Você deve considerar que as variáveis $ host e $ user são avaliadas. Assim, $ host muda
dinamicamente seu valor para o nome do host / conta real antes de um novo processo ser gerado. o
o mesmo é verdade para $ user.
a) Verifique a data e o tempo de atividade nos hosts 192.168.0.1 e 192.168.0.2
prato -e 'data \; tempo de atividade' [email protegido] [email protegido]
b) Distribuir '.profile' e '.bashrc' para contas de convidados em 'host1' e 'host2'
prato -E "scp $ HOME / .profile $ HOME / .bashrc convidado @ \ $ host:" host1 host2
or
dicp -e "$ HOME / .profile $ HOME / .bashrc guest @:" host1 host2
or
dicp -g "host1 host2" $ HOME / .profile $ HOME / .bashrc guest @:
or
dicp -g "guest @ host1 guest @ host2" $ HOME / .profile $ HOME / .bashrc:
c) Copie os arquivos remotos '.profile' para o diretório local no localhost
dicp -g "convidado @ host1 convidado @ host2 admin @ host2": .profile .profile. \ $ host
Aqui, o nome do arquivo de destino (arquivo local) incluirá o nome da conta remota
para que os arquivos locais tenham nomes exclusivos.
d) Use `ssh 'para fazer o login em' host1 'e copie de lá' .profile 'para' host2 '
Uma vez que a lista de hosts não pode estar vazia, um host fictício é usado para iniciar o
processo. A opção `-t 'é necessária para forçar a alocação de pseudo-tty em` ssh',
caso contrário, `ssh 'irá falhar com erro no login. Uma segunda senha (a1-senha) é
necessário para autenticação scp em 'host2':
prato -a '' -E 'ssh -t user1 @ host1 scp .profile user2 @ host2:' dummy_host
Caso a senha de 'usuário1' e 'usuário2' seja a mesma, você será solicitado apenas
uma vez para uma senha de login para user1 @ host1 se você usar `-p1 ':
prato -p1 -E 'ssh -t user1 @ host1 scp .profile user2 @ host2:' dummy_host
Ou de forma equivalente, e mais simples:
dish -p1 -t -e 'scp .profile user2 @ host2:' user1 @ host1
e) Substitua as linhas por `START_XNTPD = 'por` START_XNTPD = "yes"' em /etc/rc.config
Este comando é executado como usuário root em cada host listado em 'Hosts.root':
dish -u root -E 'ssh $ user @ $ host "perl -pi -e
\ "s / ^ START_XNTPD =. * \ $ / START_XNTPD = \\\" sim \\\ "/ g; \" /etc/rc.config "'-g Hosts.root
f) Congelar contas de usuários em uma lista de rescisão
Usando um script chamado `FreezeUser.sh ', todas as contas de usuários encontrados em
'Terminate.User.lst' será congelado hoje às 24:00 horas em ambos os grupos de servidores como
definido nos arquivos 'Hosts.1' e 'Hosts.2':
dish -E 'ssh root @ $ host "cat Terminate.User.lst | enquanto lê UN; faça echo \" su -
admin -c \\\ $ HOME / bin / FreezeUser.sh \ $ UN \ "| às 24:00; concluído" '-g Hosts.1 -g
Anfitriões.2
g) Imprimir o arquivo de configuração remota de um montador automático
Faça login como usuário 'admin' no host 192.168.0.1, mude para 'root' e, em seguida, cat o arquivo
'/etc/auto.net' e imprime a data. A opção `-a 'faz com que o programa pergunte
você para a senha de root no host remoto:
prato -u admin -a '' -E 'rsh -l $ user $ host su - root -c \ "cat /etc/auto.net \;
data \ "'192.168.0.1
h) Instale um pacote em hosts Debian GNU / Linux
Depois de montar um servidor de arquivos sobre o samba, instale a partir daí um pacote prato debian em
todos os servidores em execução, mas pule hosts na manutenção. Três senhas diferentes são
necessário para autenticação - um para login, próximo para su-root e o último para
montando o servidor de arquivos:
prato -a0 -a1 -a2 -g Debian.up -r Debian.maint -e 'su - -c \ "mount -t smbfs
//FILESERVER/Packages.Dir / mnt / smb; dpkg -i /mnt/smb/dish_1.19.1_all.deb \ "'
i) Verifique a carga do sistema> 2 usando os arquivos de configuração padrão 'hosts' e 'pass'
prato '(uptime | egrep \ "(\ [2-9 \] | 1 \ [0-9 \]) \\. \" && hostname) | paste - -'
j) Consultar um banco de dados MySQL no host remoto 10.0.0.1
prato -pp -c 'mysql -p -u $ user -h' -e 'usa mysql; mostrar tabelas; descrever usuário; ' -você
raiz 10.0.0.1
k) Alterar a senha simultaneamente em todos os hosts / contas
Assumimos que a lista de contas de usuário está contida no arquivo 'Accounts.lst',
enquanto uma entrada na lista tem o formato "usuário @ nome do host". Depois do comando
execução, você será solicitado primeiro a senha de login (senha antiga) e, em seguida,
para a nova senha, que eventualmente terá que ser digitada corretamente:
dish -p '' -n '' -e passwd -g Accounts.lst
Ou, alternativamente, processar simultaneamente e silenciosamente todos os hosts:
prato -pp -nn -f -Q -e passwd -g Contas.lst
Quando você deseja alterar a senha e usar `-nn ', então a a1-senha é implicitamente
definido igual à senha de login (a0-senha).
l) Mude a senha da conta 'root' (não use a opção `-a0 ')
Se você for alterar a senha de root em 'remotehost', tente:
dish -nn -e passwd root @ remotehost
O mesmo que o anterior, mas faça login como usuário 'admin' (senha de login) e, em seguida, mude para
'root' (a1-password) e, finalmente, atualize a senha root:
dish -a1 -nn -e 'su -c passwd' admin @ remotehost
Alterar a senha de 'admin' em 'localhost', após fazer o login como 'root' via
`telnet ', é feito por:
prato -nn -c telnet -u root -e 'passwd admin' localhost
Observe que para alteração de senha, quando `-p" "'(ou equivalentemente` -a0' ou `-pp ') não é
usado explicitamente, a suposição é feita de que `passwd 'não pedirá a senha antiga,
como no caso de uma mudança de senha por 'root'. O mesmo é verdade também se você puder fazer o login em um
conta sem digitar uma senha, mas então `passwd 'solicita que você digite a antiga -
esta situação ocorre quando alguém está usando uma chave ssh para login sem
autenticação por senha. Para tal cenário, a escolha correta de opções é `-p0 -aa -nn '.
No caso de arquivos de configuração devidamente preparados em '$ HOME / .dish', pode-se usar o prato como um
shell distribuído para um cluster virtual de hosts e execute-o sem especificar qualquer
parâmetros do programa, mas apenas emitindo um comando, como por exemplo `dish df -k / 'ou` dicp
.perfil :'.
Por último, deve-se estar ciente de que no caso de autenticação por senha,
O processo de login automatizado do prato é baseado na expectativa de que o prompt de login envie para
o terminal iráincluir a string regex que não diferencia maiúsculas de minúsculas `Senha: * $ '(mas veja também
`-X '). Caso contrário, o procedimento de autenticação falhará.
Use o prato online usando serviços onworks.net