SFTP Переименуйте файл, чтобы добавить дату

Я отправляю файл с хоста мейнфрейма на ftp-сервер Linux с помощью sftp.

Я хочу добавить дату к имени файла, как только файл будет находиться в ящике Linux. (Пример: имя файла.txt становится именем файла122308.txt)

Я попробовал команду «переименовать», используя «дата +% m% d% y» - файл был переименован, но флаги не были выполнены (имя файла стало именем файла «date +% m% d% y».txt

Команды 'cp' и 'mv' не работают... есть идеи?

Спасибо.


person Community    schedule 23.12.2008    source источник


Ответы (5)


Команды отправляются через плату управления JCL. Не думаю, что этот подход сработает.

person Community    schedule 23.12.2008
comment
Как вы отправляете команды в JCL? Выполняете ли вы команду оболочки из JCL с помощью команд BPX*? - person Anthony Giorgio; 05.01.2009

Поскольку sftp не запускает оболочку, выполнять команду date нечего. Вам, вероятно, придется оценить новое имя, которое вы хотите на стороне отправителя, а затем выполнить переименование sftp.

Другой вариант — отправить файлы в область очереди (например, в папку с вашей строкой даты) и заставить скрипт в Linux-боксе перемещать/переименовывать полученные файлы соответственно.

person JimB    schedule 23.12.2008

Можно ли это сделать через командную строку? Существуют варианты для выполнения sftp как...

sftp [[user@]host[:file [file]]]

... так что вы можете казнить ...

export WHEN=`date +%m%d%y`
sftp theUser@theHost:filename$WHEN.txt filename.txt <<-!
thePassword
!
person dacracot    schedule 23.12.2008
comment
Команды отправляются через плату управления JCL. Не думаю, что этот подход сработает. - person ; 23.12.2008

У вас есть доступ к серверу Linux? В этом случае вы можете просто переименовать файлы там. Например, вы можете использовать inotify для мониторинга каталога, а затем иметь сценарий, который добавляет дату к файлам всякий раз, когда в этом каталоге создается новый файл.

Вот простой пример на Python (хотя для большинства языков существуют привязки inotify). Событие, которое вы хотите прослушать, — IN_CREATE.

person skoob    schedule 24.12.2008

Не уверен насчет вашего SFTP-клиента для мэйнфреймов, но многие SFTP-клиенты поддерживают использование ! префикс для запуска команд локальной операционной системы. Таким образом, вы можете скопировать файл на новое имя перед отправкой, затем отправить, а затем удалить копию.

E.g.:

!cp filename.txt filename122308.txt
put filename122308.txt
!rm filename122308.txt
exit

Если пространство является премиальным, дважды используйте mv вместо cp и rm.

person Don Rice    schedule 10.08.2010