O UnixWare 7 falha ao passar a variável para o Linux

0

Sou novo no Bash e tenho um problema que é difícil de resolver, pode ser fácil para alguns.

Eu tenho um sistema SCO UnixWare 7 muito antigo, sem SSH apenas SSH disponível. SCO não existe mais, acredito que eles estão falidos. A caixa está em funcionamento há cerca de 15 anos e nunca teve problemas. Nós nos afastaremos desta plataforma no verão, mas por enquanto eu preciso copiar alguns arquivos para uma das caixas do Linux e estou tentando escrever um script bem curto. Por favor, não me diga que o RSH não é seguro, já que neste ambiente a segurança é irrelevante. A caixa UnixWare e duas outras caixas Linux rodando o CentOS 6 são dedicadas e usadas por 3 pessoas apenas para gerenciar uma série de barreiras em um estacionamento e não conectadas à internet ou a qualquer outra rede. Apenas 3 servidores, conectados a um switch autônomo de 4 portas, nada mais conectado

Problema

Eu executei este comando no servidor Unixware para definir a variável no Linux1 executando o CentOS 6 com um dado formatado e mostrar o conteúdo:

rsh Linux1 "TEST=$(date --date='-9day' +%A_%B-%d_Backup); echo \$TEST" 

Eu recebo este erro

# rsh Linux "TEST=$(date --date='-9day' +%A_%B-%d_Backup); echo \$TEST"
UX:date: ERROR: Illegal option -- -
UX:date: ERROR: Incorrect usage
UX:date: TO FIX: Usage:
        date [-u] [+format]
        date [-u] [[mmdd]HHMM | mmddHHMM[[cc]yy]]
        date [-a [-]sss.fff]

Se eu for ao Linux2 também rodando o CentOS 6 e executando o mesmo comando exato no Linux1, não tenho erros

[Linux2 ~]# rsh Linux1 "TEST=$(date --date='-9day' +%A_%B-%d_Backup); echo \$TEST"
Wednesday_January-14_Backup

Por que o comando não funciona quando executado no servidor UnixWare? Parece que o Unixware não passa a string para o Linux1 para processar, mas tenta processá-la localmente (não existe a opção --date naquela antiga caixa do Unixware, daí o erro).

    
por fabio 23.01.2015 / 02:47

1 resposta

1

Este não é realmente um problema específico do UnixWare, Bash ou RSH. É um problema de cotação, e isso afetará qualquer sistema que não tenha a mesma implementação date do sistema remoto. Por exemplo, isso também acontece quando o SSHing de um Mac rodando Bash para uma caixa Linux.

Para fazer o sistema remoto executar date em vez do local, ajuste as citações da seguinte forma:

# rsh Linux1 'TEST=$(date --date=-9day +%A_%B-%d_Backup); echo $TEST'

Note que podemos pular algumas das citações internas e escapar dessa maneira também.

    
por 23.01.2015 / 22:10