Usando caracteres especiais "e" no comando send no script de espera

1

Estou tentando executar um comando em servidores Linux para buscar quais todos os servidores exigem a redefinição de senha raiz, pois há vários servidores. Estou usando um script de espera para automatizá-lo, meu comando contém caracteres especiais como aspas duplas e acento grave ' . portanto, na execução, ele fornece caracteres extras após as aspas duplas como um erro.

send " chage -l root | grep -i "Password expires" | if [[ 'awk -F : '{print $2}' ' = "never" ]] ; then echo "password needs to be changed " ;else echo "skipping reset " ; fi;\r"

Eu tentei usar \ com aspas duplas, mas o erro continua igual

    
por AshwaraS 12.03.2016 / 06:17

2 respostas

3

Se você quiser uma string sem interpolação em Tcl (a linguagem espera usar), e isso não acontece tem {} caracteres ou variáveis que você deseja expandir e coloque-os em {} . Por exemplo:

send { chage -l root | grep -i "Password expires" | if [[ 'awk -F : '{print $2}' ' = "never" ]] ; then echo "password needs to be changed " ;else echo "skipping reset " ; fi;}
send \r
    
por 12.03.2016 / 06:57
0

Onde você colocou barras invertidas? Em todas as citações ou apenas nas internas como esta?

send " chage -l root | grep -i \"Password expires\" | if [[ 'awk -F : '{print \}' ' = \"never\" ]] ; then echo \"password needs to be changed \" ;else echo \"skipping reset \" ; fi;\r"

E sim, você precisa do caractere \ a $ também, porque essa string será passada para o comando e você não precisará do bash para resolvê-lo muito cedo.

    
por 14.03.2016 / 06:19