Eu quero que um script bash inicie várias conexões SSH para vários servidores linux em várias novas janelas bash, não para processamento adicional, apenas para se conectar com um comando simples em vez de ter que digitar as linhas ssh completas toda vez que reinicio o bash (usando WSL2/WSLg).
Abrir novos terminais e executar comandos neles não é problema. Apenas executar o ssh (openSSH) é um problema nos três casos, pois todos lançam o mesmo erro:'ad port ' 12345
Executando-o manualmente no bash, invoco o ssh assim: ssh [email protected] -p 12345
Então, suponho que, como em todos os comandos, posso apenas fazer o script da seguinte maneira:
#!/bin/bash
ssh [email protected] -p 12345
ssh [email protected] -p 67890
ssh [email protected] -p 54321
Este é um problema relacionado ao script ou pode ser um problema do WSL?
EDIT: Quero salientar que meu foco agora está principalmente no erro 'porta de anúncio' que recebo. Eu não tenho idéia do que é isso e não consigo encontrar nada útil sobre isso na Inet.
EDIT2: Esta é apenas uma simplificação excessiva do código, pois não tenho permissão para compartilhar nenhum detalhe de todo o script. Eu sei que este código apenas executará sequencialmente o ssh, mas isso é apenas para teste de qualquer maneira. Eu só quero ver as três conexões sendo estabelecidas em ordem (os logins são tratados por pares de chaves RSA).
Todo o script foi escrito usando NANO ou VIM em um servidor Proxmox->Debian (Debian virtual rodando em Proxmox). Portanto, os finais de linha CRLF infelizmente não são o problema. Obrigado por apontar isso embora!
O problema não foi resolvido diretamente, mas pode ser resolvido com outra abordagem - usando tmux - conforme sugerido por @NotTheDr01ds !
Isso provavelmente é causado pela criação ou edição do arquivo em um editor do Windows que o salvou com terminações de linha DOS/Windows CRLF. Eu recebo o mesmo erro se eu criar seu script usando
notepad.exe
. O bloco de notas agora pode salvar no formato Unix/Linux, mas não salva por padrão para novos arquivos, a menos que você altere essa opção manualmente.Em geral, sempre edite arquivos dentro do WSL usando ferramentas do Linux.
Seu script ainda não tenta resolver isso. O script atual, conforme mencionado nos comentários, irá executá-los sequencialmente em uma única
bash
instância (o subshell da própria linha shebang do script).Se você quiser iniciar cada um em uma "janela" separada, precisará de alguma ferramenta que forneça essa funcionalidade. O
wsl.exe
comando em si não é um bom candidato para isso, pois por padrão, ele irá executar uma nova instância dentro do terminal atual. É possível usar o PowerShell (mesmo de dentro do WSL) com oStart-Process
cmdlet para iniciar uma nova janela/terminal do WSL:Da WSL:
Isso pode ser combinado com o argumento de
wsl.exe
's-e/--execute
para iniciar osssh
comandos:Mas eu recomendo usar o Tmux para isso. Ele é instalado por padrão na distribuição WSL Ubuntu:
Isso executará seus
ssh
comandos em 3 janelas Tmux diferentes e, em seguida, iniciará um shell bash em cada uma para que você possa visualizar os resultados. Se você ainda não conhece o Tmux, precisará aprender algumas teclas de atalho para poder alternar entre janelas, etc.É claro que existem outras maneiras de fazer isso também.