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'