Проверка свободного места на FTP-сервере - PullRequest
2 голосов
/ 15 ноября 2011

Я выполняю сценарий сборки, в котором три исполняемых файла (по 100 МБ каждый) загружаются на FTP-сервер.

Первая загрузка может завершиться неудачно из-за проблемы с пространством на сервере FTP, поэтому наш процесс сборки завершается неудачно.Это означает, что мне нужно освободить место на сервере и снова запустить скрипт сборки, что является пустой тратой времени.Я хотел бы проверить размер FTP перед загрузкой exe, чтобы убедиться, что там есть место.Если места достаточно, загрузите его, в противном случае попросите пользователя ввести данные.

Как проверить размер FTP в скрипте ant.

Ответы [ 4 ]

1 голос
/ 15 марта 2017

Наш продукт, CompleteFTP , позволяет добавлять пользовательские команды. Пользовательские команды могут быть вызваны из любого протокола (FTP, SFTP, SSH, HTTP). В этом случае она будет вызываться как команда FTP SITE.

Пользовательские команды могут быть добавлены через встроенный Javascript или через сборку .NET. Со встроенным Javascript работать намного проще, поэтому я разработал для вас скрипт, который делает это:

function drivespace(driveLetter) {
    var driveName = driveLetter.toUpperCase() + ":\\";
    var drives = System.IO.DriveInfo.GetDrives();
    for (var i=0; i<drives.Length; i++) {
        var drive = drives[i];
        if (drive.Name == driveName)
            return drive.TotalFreeSpace;
    }
    throw "Could not find drive " + driveName;
}

Обратите внимание, что, хотя это Javascript, он вызывает класс .NET, System.IO.DriveInfo . Сценарий вводится непосредственно в инструмент администрирования и доступен сразу.

Вот пример сеанса командной строки, который показывает, что он вызывается:

Connected to MyServer.
220-Complete FTP server
220 CompleteFTP v 10.1.0
530 Please login with USER and PASS
User (MyServer:(none)): myuser
331 Password required for myuser
Password:
230 User myuser logged in.
ftp> SITE drivespace C
200-170992414720
200 SITE command successful.
ftp> SITE drivespace g
501-Could not find drive G:\
501 SITE command failed.
ftp>
1 голос
/ 15 ноября 2011

FTP-серверы обычно не допускают этого, но вы можете попробовать команду:

ftp> site df -kl

Однако я предлагаю вам запланировать сценарий на FTP-сервере, который записывает в файл TXT текущее свободное пространство(что, в свою очередь, вы можете прочитать с вашего клиента).

1 голос
/ 15 ноября 2011

Как обсуждено в комментариях , вы можете написать сценарий оболочки (при условии, что FTP-сервер является Linux-боксом) в соответствии с:

#!/bin/bash

FTPDIR="/path/to/ftp/dir"
echo `df -kl / | tail | awk '{print $4}'` > ${FTPDIR}/free_space.txt

Убедитесь, что вы заменили path/to/ftp/dir с указанием фактического пути к каталогу, из которого вы будете загружать.

Добавьте этот скрипт в crontab (crontab -e) сервера и разрешайте ему запускаться каждый час (0 * * * *)или так.Вы можете скачать файл free_space.txt, который содержит почасовое обновление свободного места на FTP-сервере.

0 голосов
/ 15 ноября 2011

Возможное решение ftp> df -h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...