2012-05-03 2 views
0

Я использую приведенный ниже код для подключения к ftp-узлу. Я просто хочу знать, как я могу проверить, не могу ли я установить соединение с ftp-сервером, или ftp-сервер не отвечает. В любом случае это предупредило бы, что ftp-сервер в порядке или ниже. На самом деле я хочу встроить обычный код bash для проверки возможности подключения.Подтверждение подключения к FTP необходимо в сценарии Bash

#!/bin/ksh 
ftp -nv <<EOF 
open xxx.xx.xx.xx 
user xxx xxxxxxxxx 
bye 
EOF 

ответ

1

Как насчет grepping вывода из ftp? Я не уверен, что ваша версия фтп возвращается, когда он сделал успешную загрузку, но что-то вроде:

#!/bin/ksh 

(
ftp -nv <<EOF 
open xxx.xx.xx.xx 
user xxx xxxxxxxxx 
bye 
EOF 
) | grep -i "success" 
if [[ "$?" -eq "0" ]] 
then 
     echo "FTP SUCCESS" 
else 
     echo "FTP FAIL" 
fi 

Должен работать ..

+0

дает следующее сообщение об ошибке ./noini.sh[3]: Ошибка синтаксиса в строке 3: '<<» непревзойденная – Dogar

+0

Хм, может быть разница между Баш и KSH (который я не имею) простые скрипты обычно совместимы, но, возможно, не в этом случае. – Benj

+0

Ваш код работает в моей среде. @Dogar: Убедитесь, что после обеих копий «EOF» нет скрытых символов (пробел, табуляция?). Всем удачи. – shellter

0

У меня такая же проблема, перед тем, решить ее с проверкой вывод команды ftp. Тем не менее, это было довольно странно, поэтому я решил использовать PERL для этого.

#!/usr/bin/perl 
use strict; 
use warnings; 
use Net::FTP; 

# open connection 
my $ftp = Net::FTP->new("127.0.0.1"); 
if (! $ftp) { 
    print "connection failed!"; 
    exit 1; 
} 

# in case you would need to test login too 
# if (! $ftp->login("username", "password")) { 
# print "login failed!"; 
# exit 2; 
#} 

$ftp->close(); 
exit 0; 
Смежные вопросы