Tentando Utime via FTP

1

Estou conectando ao meu servidor via FTP (essa é a única maneira que eu tenho acesso a este servidor em particular). Eu preciso utime um comando via FTP para o servidor. Outros comandos funcionam, mas quando tento algo como

site for file in *;do utime 20120101084400 ${file}; done;

para alterar todas as datas em um determinado diretório, recebo um erro que diz usage: format do formulário ou comando inválido dependendo da variação do comando que tento.

Eu tentei este comando (sem a parte do site) no meu unix local e funciona, mas não remotamente via FTP.

Como faço isso? Se houver uma maneira de fazer isso recursivamente, será um bônus ... :)

obrigado.

    
por SpaceDog 10.12.2012 / 05:25

1 resposta

2

Os comandos permitidos SITE variam com o daemon FTP em uso (por exemplo, SITE CHMOD em vsftpd ; mais alguns em FtpServer do Apache . Em geral, não é o recurso de shell remoto que você espera. No entanto, o ProFTPd aparentemente suporta SITE UTIME .

Portanto, se o seu FTPd em questão tem SITE UTIME , você poderia tentar SITE UTIME em um loop do lado do cliente , como este (pseudo-código, nenhum servidor mencionado, também tenha em mente que pode haver espaços (precisa de cotação), você também precisa de um cliente de FTP versátil ( lftp pode ser um bom candidato)):

for file in $(./ftp-get-directory-list)
  do ftp-client -c "SITE UTIME ${file}"
done

EDITAR veja também a boa resposta de Gilles aqui sobre a possível interação entre scripts Bash e lftp .

Adendo Se você estiver em alguma linguagem de script (por exemplo, Python), você também pode fazer um favor a si mesmo por usando alguma biblioteca de FTP .

    
por 10.12.2012 / 10:26

Tags