2013-03-08 1 views
1

Извините, если это слишком простой вопрос. Но я разработчик Java, не знаю сценариев оболочки. Я googled, но не смог найти точно, что я ищу.Файлы Sftp с удаленного сервера на локальный сервер

Мое требование

  1. Подключение к удаленному серверу с помощью SFTP [аутентификации на основе пабе/PRI ключей]. Переменная, указывающая на файл закрытого ключа
  2. Передача файлов с помощью определенного расширения [.log] в папку локального сервера. Переменная установить путь удаленного сервера и локальная папка
  3. Переименуйте скопированный файл в удаленном сервере
  4. Записывать все переданные файлы в текстовом файле

Может ли один дать мне сценарий оболочки для этого?

Это до сих пор я сформулировал предложения. Тем не менее некоторые вопросы остались на моей стороне;)

export PRIVKEY=${private_key_path} 
export [email protected] 
export RMTDIR=/logs/*.log 
export LOCDIR=/downloaded/logs/ 
export LOG=sucess.txt 

scp -i $PRIVKEY $RMTHOST:$RMTDIR $LOCDIR 
for i in 'ls -1 $LOCDIR/*.log' 
do 
    echo $i >> $LOG 
done 

ssh $RMTHOST -c "for i in `ls -1 $RMTDIR; do mv /logs/$i /logs/$i.transferred; done" 

ответ

1

Что об этом подходе?

  1. Подключение к удаленному серверу с помощью SFTP [аутентификации на основе пабе/PRI ключей]. Переменная, указывающая на файл закрытого ключа
  2. Передача файлов с определенным расширением [.log] в папку локального сервера. Переменный установить путь удаленного сервера и локальной папки
scp [email protected]:/dir/of/file/*.log /your/local/dir 
  1. Вход все переданные файлы в текстовом файле
for i in `ls -1 /your/local/dir/*.log` 
do 
    echo $i >> $your_txt 
done 
  1. Renameпереданный файл в удаленном сервере
ssh [email protected] -c "for i in `ls -1 /dir/of/file/*.log; do mv /dir/of/file/$i /dir/of/file/new_name_based_on$i; done" 
+0

Не могли бы вы добавить/записать его как полный файл сценария. За исключением ls и chmod [базовые команды], не знаю сценариев linux – Reddy

+0

Если какая-либо передача файла не удалась, как это условие знает? – Reddy

+0

Что касается файла сценария, то речь идет о соединении частей, которые я указал. Сначала попробуйте, а затем вернитесь с конкретными вопросами. – fedorqui

1

Использование УПП (Secure Copy) команду для передачи файла. Вы также можете добавить ключ -C, который сжимает файл. Это может ускорить процесс. т.е. скопировать file1 от server1 к server2,

На server1:

 
#!/bin/sh 
scp -C /home/user/file1 [email protected]:/home/user 

Edit:

 
#!/bin/sh 
scp -i {path/to/pub/pri/key/file} /home/user/file1 [email protected]:/home/user 
+0

быть открытым, я не понятие о сценариях командной оболочки. В настоящем проекте как разработчик Java у меня есть эта ситуация и поиск помощи :) – Reddy

+0

Этот 'scp -C/home/user/file1 root @ server2.com:/home/user' - это команда, которую вы должны ввести в консоль консоли, чтобы передавать, безопасно, файлы на удаленный сервер. Поскольку 'scp' базируется в SSH, вам необходимо пройти аутентификацию. – KiaMorot

+0

Правильная проверка подлинности. – Tsimtsum