нужна помощь с shell скриптом

Статус
В этой теме нельзя размещать новые ответы.

globalmoney

Мастер
Регистрация
28 Апр 2007
Сообщения
428
Реакции
31
Есть скрипт:
Код:
#!/bin/sh
IP='ip сервера'
USER='логин'
PASSWD='пароль'
#переходим в каталог, где лежат файлы на сервере
cd /backup
#запускаем консольный FTP клиент
ftp -n $IP
user $USER $PASSWD
#переходим в каталог на FTP, куда нужно положить эти файлы
cd /backup
#копируем файл
put file-*
put file.conf
.....
#Закрываем сессию FTP
close
#Выходим из FTP
bye
Но проблема в том, что почему то авторизация после подключения к серверу, не происходит.
Кто ни будь знает как это можно исправить?
 
Смотри, на строчке
Код:
ftp -n $IP
шелл запускает внешнюю программу ftp и ждет ее завершения, а следующая строка
Код:
user $USER $PASSWD
будет выполнена после завершения предыдущей.
Для передачи команд во внешнюю программу надо использовать другие инструменты, могу порекомендовать expect.
Скрипт на нем будет выглядеть как-то так.
Код:
#!/usr/bin/expect -f
set SERVER "ftp.site.ru"
set USERNAME "mylogin"
set PASS "mypass"
log_user 1
spawn ftp $SERVER
expect "username:"
send "$USERNAME\r"
expect "password:"
send "$PASS\r"
expect "ftp>"
send "bin\r"
expect "ftp>"
send "put file-*\r"
expect "ftp>"
send "bye\r"
expect eof
 
Смотри, на строчке
Код:
ftp -n $IP
шелл запускает внешнюю программу ftp и ждет ее завершения, а следующая строка
Код:
user $USER $PASSWD
будет выполнена после завершения предыдущей.
Для передачи команд во внешнюю программу надо использовать другие инструменты, могу порекомендовать expect.
Скрипт на нем будет выглядеть как-то так.
Код:
#!/usr/bin/expect -f
set SERVER "ftp.site.ru"
set USERNAME "mylogin"
set PASS "mypass"
log_user 1
spawn ftp $SERVER
expect "username:"
send "$USERNAME\r"
expect "password:"
send "$PASS\r"
expect "ftp>"
send "bin\r"
expect "ftp>"
send "put file-*\r"
expect "ftp>"
send "bye\r"
expect eof

Спасибо за пример.
Дело в том, что раньше ни когда не сталкивался с expect, поэтому у меня вопрос, как в нём получить системную дату и присвоить её переменной?
 
expect использует tcl в качестве скриптового движка.
Присвоение системной даты переменной на tcl выглядит так:
Код:
set myvar [exec date +%d.%m.%Y]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху