A execução dos seguintes comandos em um shell é executada sem problemas:
ssh user@machine systemctl status my-service.service
ssh user@machine sudo systemctl stop my-service.service
scp -r ./my-service/* user@machine:/home/user/my-service
ssh user@machine chmod +x /home/user/my-service/my-service
ssh user@machine sudo systemctl start my-service.service
ssh user@machine sudo systemctl status my-service.service
No entanto, colocar isso em um deploy.sh
arquivo faz com que nenhum dos itens acima seja executado.
Erros:
- O nome de unidade inválido "my-service" foi escapado como "my-service\x0d" (talvez você deva usar systemd-escape?)
- A unidade my-service\x0d.service não foi encontrada.
- O nome de unidade inválido "my-service.service" foi escapado como "my-service.service\x0d" (talvez você deva usar systemd-escape?)
- Falha ao parar my-service\x0d.service: Unidade my-service.service\x0d.service não carregada. : Nenhum arquivo ou diretórionlock/
- chmod: não pode acessar '/home/user/my-service/my-service'$'\r': Nenhum arquivo ou diretório
- O nome de unidade inválido "my-service.service" foi escapado como "my-service.service\x0d" (talvez você deva usar systemd-escape?)
- Falha ao iniciar my-service.service\x0d.service: Unidade my-service.service\x0d.service não encontrada. O nome de unidade inválido "my-service.service" foi escapado como "my-service.service\x0d" (talvez você deva usar systemd-escape?)
- A unidade my-service.service\x0d.service não pôde ser encontrada.
Alguns foram quebrados. Parece algo relacionado à fuga. Por alguma razão, adicionar um espaço no final das linhas faz com que funcione, mas ainda não sem erros.
Pesquisando sobre os erros mostra alguns acertos sobre como usá --
-lo e adicioná-lo junto com o espaço à direita faz com que alguns comandos funcionem, mas ainda dando um erro de escape.
Eu colocaria dólares em donuts que você editou este arquivo em ou de uma máquina Windows .
Linux usa \x0a (código ASCII 10) para separar linhas dentro de um arquivo (ou script).
O Windows usa a combinação de \x0d ("Carriage_Return", código ASCII 13) e \x0a ("Line Feed", ASCII 10) para fazer o mesmo trabalho.
Dê um arquivo editado pelo Windows para uma máquina Linux e ela verá cada linha como tendo um \x0d estranho no final.
Adquira um editor decente do Windows (o NotePad++ é gratuito e altamente recomendado) ou aprenda a usar o vi . Claro, ele tem sua própria curva de aprendizado, mas alguns de seus recursos podem surpreendê-lo!