|
|
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Добрый день. Стоит задача забирать файлы с удаленного сервера по протоколу SSH, как забирать понятно, командой scp. А как вот эти файлы на удаленном сервере потом переложить в какую-нибудь другую папочку, чтобы в следующий раз их не забрать заново? никак не разберусь.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 08:58:38 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
ssh36Добрый день. Стоит задача забирать файлы с удаленного сервера по протоколу SSH, как забирать понятно, командой scp. А как вот эти файлы на удаленном сервере потом переложить в какую-нибудь другую папочку, чтобы в следующий раз их не забрать заново? никак не разберусь....mv filename ../ne_zabirat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 09:21:48 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Да, если зайти на удаленный сервер и выполнить эту команду, то конечно проблем никаких нет :) Но вот как это заавтоматизировать в скрипте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 09:56:17 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
так тоже через ssh ssh имясервера команда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 10:11:53 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
ssh36Да, если зайти на удаленный сервер и выполнить эту команду, то конечно проблем никаких нет :) Но вот как это заавтоматизировать в скрипте? Код: plaintext 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 10:13:14 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Спасибо большое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 14:03:33 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Снова я :) Пытаюсь вот такой конструкцией получить список файлов, которые надо загрузить: ftp -n -p $HOST_NAME $PORT_NAME > $TEMP_FILE <<EOF quote USER $USER_NAME quote PASS $QUOTE_NAME cd $F_DATA_DIR ls quit EOF однако мне в файл помимо названия вываливается еще куча ненужной информации. drwxr-xr-x 3 logs_s1211197 (?) 512 May 11 15:02 . drwxr-xr-x 8 logs_s1211197 (?) 512 May 11 14:21 .. -rw-r--r-- 1 logs_s1211197 (?) 6 May 11 14:22 PYM_11_05_08_12_00_00.DAT -rw-r--r-- 1 logs_s1211197 (?) 4 May 11 14:51 PYM_11_05_08_12_00_00.LOG -rw-r--r-- 1 logs_s1211197 (?) 6 May 11 14:52 PYM_11_05_08_13_00_00.DAT -rw-r--r-- 1 logs_s1211197 (?) 6 May 11 15:01 PYM_11_05_08_13_00_00.LOG -rw-r--r-- 1 logs_s1211197 (?) 6 May 11 15:02 PYM_11_05_08_14_00_00.DAT -rw-r--r-- 1 logs_s1211197 (?) 6 May 11 15:01 PYM_11_05_08_14_00_00.LOG drwxr-xr-x 2 logs_s1211197 (?) 512 May 11 14:21 done Как бы сделать так, чтобы выводились только имена файлов? Чтобы потом их можно было бы через цикл скопировать на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2008, 20:03:52 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
1. Попробуйте воспользоваться командой nlist . 2. В дальнейшем для обработки файла $TEMP_FILE Вы можете воспользоваться каким либо редактором для выделения необходимой информации, например AWK. 3. Не будет ли Вам достаточно использовать команду mget с указанимем необходимых для копирования файлов по маске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2008, 20:43:58 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
g613 ssh36Да, если зайти на удаленный сервер и выполнить эту команду, то конечно проблем никаких нет :) Но вот как это заавтоматизировать в скрипте? Код: plaintext 1. ? А как в команде передавать переменные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 09:54:16 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
ssh36Снова я :) Пытаюсь вот такой конструкцией получить список файлов, которые надо загрузить: ftp -n -p $HOST_NAME $PORT_NAME > $TEMP_FILE <<EOF Как бы сделать так, чтобы выводились только имена файлов? Чтобы потом их можно было бы через цикл скопировать на сервер.ssh b127 'ls /usr' >filelist ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 10:18:46 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
ssh36А как в команде передавать переменные? export AAA=hehe; ssh -l oracle test-bo "echo $AAA" hehe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 10:20:29 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
И еще раз большое спасибо. У меня остался только один последний вопрос: если в цикле выполнять команду ssh, то почему-то выполняется только одна итерация. Содержимое файла $TEMP_FILE: PYM_09_05_2008_06_00_01.DAT PYM_09_05_2008_12_00_00.CTL PYM_09_05_2008_12_00_00.DAT PYM_09_05_2008_18_00_01.CTL PYM_09_05_2008_18_00_01.DAT PYM_10_05_2008_00_00_00.CTL PYM_10_05_2008_00_00_00.DAT PYM_10_05_2008_06_00_02.CTL PYM_10_05_2008_06_00_02.DAT PYM_10_05_2008_12_00_01.CTL PYM_10_05_2008_12_00_01.DAT PYM_10_05_2008_18_00_01.CTL PYM_10_05_2008_18_00_01.DAT PYM_11_05_2008_00_00_01.CTL PYM_11_05_2008_00_00_01.DAT Все эти файлы уже лежат в $DATA_DIR/$FILE_NAME Кусок программы: cat $TEMP_FILE | while read FILE_NAME; do W_FILE_NAME=$DATA_DIR/$FILE_NAME if [ -f $W_FILE_NAME ] then { cp $W_FILE_NAME $HISTORY_DIR echo `current_date`: Copied $W_FILE_NAME to HISTORY ssh ****** "mv ./$FILE_NAME ./done/$FILE_NAME" echo `current_date`: removed $FILE_NAME to DONE from remote host } fi done Т.е. в данном случае скопируется в архивную папку и переместится в папку done на удаленном сервере только самый первый файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 11:36:11 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
В начале скрипта включи отладку set -x ----------------------------------------------------------------------------------------------------------------------------------------- А вазелин еще надо заслужить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 11:59:50 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Вот, добавил в вывод еще предыдущий кусок, который файлы забирает. В файле payments.tmp две записи: PYM_12_05_2008_12_00_02.CTL PYM_12_05_2008_12_00_02.DAT В первом цикле все хорошо, два файла скопировались с удаленного сервера, а вот во втором цикле - только первый файл. + cd /export/home/payments/oper + read FILE_NAME + cat /export/home/tmp/payments.tmp HISTORY_FILE_NAME=/export/home/payments/history/PYM_12_05_2008_12_00_02.CTL + [ -f PYM_12_05_2008_12_00_02.CTL ] -a [ -f /export/home/payments/history/PYM_12_05_2008_12_00_02.CTL ] + current_date + date +%Y-%m-%d %H:%M:%S + return + echo 2008-05-12 12:04:00: loading PYM_12_05_2008_12_00_02.CTL + scp -Cp ********/PYM_12_05_2008_12_00_02.CTL /export/home/payments/oper/PYM_12_05_2008_12_00_02.CTL + current_date + date +%Y-%m-%d %H:%M:%S + return + echo 2008-05-12 12:04:01: PYM_12_05_2008_12_00_02.CTL is loaded + read FILE_NAME HISTORY_FILE_NAME=/export/home/payments/history/PYM_12_05_2008_12_00_02.DAT + [ -f PYM_12_05_2008_12_00_02.DAT ] -a [ -f /export/home/payments/history/PYM_12_05_2008_12_00_02.DAT ] + current_date + date +%Y-%m-%d %H:%M:%S + return + echo 2008-05-12 12:04:01: loading PYM_12_05_2008_12_00_02.DAT + scp -Cp ***************/PYM_12_05_2008_12_00_02.DAT /export/home/payments/oper/PYM_12_05_2008_12_00_02.DAT + current_date + date +%Y-%m-%d %H:%M:%S + return + echo 2008-05-12 12:04:02: PYM_12_05_2008_12_00_02.DAT is loaded + read FILE_NAME + read FILE_NAME + cat /export/home/tmp/payments.tmp W_FILE_NAME=/export/home/payments/oper/PYM_12_05_2008_12_00_02.CTL + echo + echo /export/home/payments/oper/PYM_12_05_2008_12_00_02.CTL + [ -f /export/home/payments/oper/PYM_12_05_2008_12_00_02.CTL ] + cp /export/home/payments/oper/PYM_12_05_2008_12_00_02.CTL /export/home/payments/history + current_date + date +%Y-%m-%d %H:%M:%S + return + echo 2008-05-12 12:04:02: Copied /export/home/payments/oper/PYM_12_05_2008_12_00_02.CTL to HISTORY + ssh ******** mv ./PYM_12_05_2008_12_00_02.CTL ./done/PYM_12_05_2008_12_00_02.CTL + current_date + date +%Y-%m-%d %H:%M:%S + return + echo 2008-05-12 12:04:02: removed PYM_12_05_2008_12_00_02.CTL to DONE from remote host + read FILE_NAME + test -f /export/home/tmp/payments.lock + rm /export/home/tmp/payments.lock + current_date + date +%Y-%m-%d %H:%M:%S + return + echo 2008-05-12 12:04:02: Get PM finished successfully ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 12:19:52 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Да, забыл добавить, если в коде закомментировать строчку с ssh, то цикл как и положено пройдет два раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 12:31:55 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Вызов ssh почему-то портит текущий контекст и следующей итерации не происходит. а вот так у меня работает Код: plaintext 1. 2. ----------------------------------------------------------------------------------------------------------------------------------------- А вазелин еще надо заслужить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 12:51:33 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Впрочем если пользоваться нормальным циклом то все работает и так cat $TEMP_FILE | while read FILE_NAME; do заменить на for FILE_NAME in `cat $TEMP_FILE`; ----------------------------------------------------------------------------------------------------------------------------------------- А вазелин еще надо заслужить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2008, 12:55:11 |
|
||
|
Работа с файлами на удаленном сервере
|
|||
|---|---|---|---|
|
#18+
Денис, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 09:49:44 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=35306209&tid=1486922]: |
0ms |
get settings: |
12ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 373ms |

| 0 / 0 |
