Quando executo o seguinte comando, parece funcionar bem.
$ pdsh -w root@skinner,root@mulder \
'export CRAWL_DATE=$(date +%Y%m%d); echo $CRAWL_DATE;'
skinner: 20131206
mulder: 20131206
Executar como você está descrevendo mostra isso:
$ pdsh -w root@skinner,root@mulder
pdsh> export CRAWL_DATE=$(date +%Y%m%d);
pdsh> echo $CRAWL_DATE;
skinner:
mulder:
A execução deste modo funciona assim:
pdsh> export CRAWL_DATE=$(date +%Y%m%d); echo $CRAWL_DATE;
skinner: 20131206
mulder: 20131206
Então, por que o método # 2 não funcionou?
O motivo provável é que toda vez que você executar um comando em pdsh
e clicar em retornar, esse comando será executado via ssh
em cada host. O próximo comando executado é executado em uma sessão ssh
totalmente diferente com um shell diferente, portanto a variável não existe.
Esta questão que foi apresentada em 2011, acho que dá credibilidade à minha conclusão. Edição 37: Suportar variáveis definidas pelo usuário no pdsh .
Houve uma solução interessante mencionada nessa edição, principalmente:
$ pdsh -w ^hostfile -Rexec ssh -2 -l %u %h '. ~/.pdsh/vars/%h; command'
Esse método faz uso de um arquivo que contém as variáveis, e cada comando pode, então, originar este arquivo, . ~/.pdsh/vars/%h
cada vez que um comando é executado remotamente.