shell verifica se o arquivo existe em uma linha com ssh, depois cd e npm install

0

Eu tenho estas linhas no meu script:

ipserver=1.1.1.1
fullpathfile="/var/www/html/mysite"
ssh "root@${ipserver}" "[[ -d ${fullpathfile}/node_modules ]] echo "Directory exist" ||  cd ${fullpathfile} && npm install "

Mas recebo este erro:

Unexpected remote arg: [email protected]:/var/www/html/mysite/\#012ssh [email protected] [[

Eu preciso conectar através do ssh e então verificar se existe uma pasta (node_module), se ela não existir, então faça: cd folder e npm install .

o que estou fazendo de errado?

    
por stackdave 22.03.2018 / 19:27

1 resposta

0

Observe que [[ (e [ e test ) são comandos como qualquer outro. Então você precisa de && para executar somente o echo se o [[ for bem-sucedido.

ssh "root@${ipserver}" "[[ -d ${fullpathfile}/node_modules ]] && echo "Directory exist" || cd ${fullpathfile} && npm install "

No entanto, incluir uma série de comandos entre aspas duplas pode ficar muito rápido, especialmente se o nome do diretório contiver espaços ou se seus comandos precisarem de argumentos citados.

Para evitar dores de cabeça, é melhor instalar um pequeno script no servidor (por exemplo, como "$ HOME / bin / do_npm_install.sh") que faz o que você precisa, então invoque isso com ssh, como

ssh "root@${ipserver}" "bash ~/bin/do_npm_install.sh"
    
por 22.03.2018 / 20:14