var1="rm \
faz com que var1
"rm $0
assuma o valor expect
. Então $0
tenta expandir o var1
quando você o executa.
Para resolver o problema, não atribua rm $0
ao valor expect
. Atribuir um valor que rm $0
expandirá para var1='rm \
: var1
'
var1="rm \\echo 'rm $0'>>/home/user/config-script
"
(Ou equivalentemente: rm \
) send "echo '$var1'>>/home/user/config-script\n";
Isso faz com que %code% assuma um valor de %code% (que é talvez o que você pretendia). Em seguida, a instrução %code% fará com que o comando correto seja executado na máquina remota:
var1='rm \\var1="rm \\echo 'rm $0'>>/home/user/config-script
"
'
expect -c 'spawn ssh [email protected] ;expect "password" ; send "123456\n"; \
expect "@"; send "sudo -k\n"; expect "@"; send "sudo su\n"; expect "password" ; \
send "123456\n" ;expect "@"; send "echo '"$var1"'>>/home/user/config-script\n"; \
expect "@"; send "exit\n"; send "logout\n"; interact'
O resultado final seria semelhante ao seguinte:
var1='rm \\%pre%'
expect -c 'spawn ssh [email protected] ;expect "password" ; send "123456\n"; \
expect "@"; send "sudo -k\n"; expect "@"; send "sudo su\n"; expect "password" ; \
send "123456\n" ;expect "@"; send "echo '"$var1"'>>/home/user/config-script\n"; \
expect "@"; send "exit\n"; send "logout\n"; interact'