sftp

Связь с сервером SFTP, чтобы получить доступ к его файлам

Описание

Свяжите с сервером SFTP путем вызова sftp функция, которая создает объект связи SFTP. Чтобы получить доступ к конкретной учетной записи SFTP на сервере, задайте хост и пользователя. Затем используйте объект SFTP загрузить, загрузить и удалить файлы. Также можно создать, удалить и перейти к другим папкам на сервере. Чтобы закрыть связь, используйте close функция.

Поскольку SFTP является безопасным протоколом, объект SFTP зашифрует ваше имя пользователя, ваш пароль и любые данные, с которых вы загружаете или загружаете на сервер SFTP.

Создание

Описание

пример

s = sftp(host,user) открывает связь между user и сервер SFTP host и возвращает объект связи SFTP. Ключи SSH получены из местоположения по умолчанию.

пример

s = sftp(host,user,"PublicKeyFile",publickeyfile,"PrivateKeyFile", privatekeyfile) использует файлы ключей в заданных местоположениях.

пример

s = sftp(host,user,"Password",password) использует заданный пароль.

пример

s = sftp(___,Name,Value) задает дополнительные входные параметры с помощью одних или нескольких аргументов name-value. Например, можно задать значение "ServerSystem" как "Windows" связывать с сервером SFTP, который работает на Windows® операционная система.

Входные параметры

развернуть все

Имя узла сервера SFTP в виде строкового скаляра или вектора символов.

Номер порта по умолчанию для серверов SFTP равняется 22. Чтобы задать номер альтернативного порта для связи, добавьте двоеточие (:) и номер порта к host.

Как правило, имя узла сервера запускается с "sftp", как в "sftp.example.com". Однако эта практика является соглашением, не техническим требованием. Например, s = sftp("www.example.com:22") открывает анонимную связь с номером порта 22 если сервер www.example.com сконфигурирован, чтобы предоставить услугу SFTP.

Пример: s = sftp("sftp.example.com").

Имя авторизованной учетной записи на сервере SFTP в виде строкового скаляра или вектора символов. Объект SFTP отправляет user как простой текст.

Пароль для заданной учетной записи в виде строкового скаляра или вектора символов. Объект SFTP отправляет password как зашифрованный текст.

Пример: "Password","PaSsWoRd123"

Файл с открытым ключом для аутентификации SFTP в виде строкового скаляра или вектора символов. Местоположение по умолчанию файла с открытым ключом зависит от вашей операционной системы.

  • На Linux и MacOS, местоположением по умолчанию файла с открытым ключом является $HOME/.ssh/id_rsa.pub.

  • На Windows местоположением по умолчанию файла с открытым ключом является %USERPROFILE%\.ssh\id_rsa.pub.

Пример: "PublicKeyFile","/Users/abc/sshKeys/keys.pub"

Файл секретных ключей для аутентификации SFTP в виде строкового скаляра или вектора символов. Местоположение по умолчанию файла секретных ключей зависит от вашей операционной системы.

  • На Linux и MacOS, местоположением по умолчанию файла секретных ключей является $HOME/.ssh/id_rsa.

  • На Windows местоположением по умолчанию файла секретных ключей является %USERPROFILE%\.ssh\id_rsa.

Пример: "PrivateKeyFile","/Users/abc/sshKeys/keys"

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: "System","Windows"

Тип, чтобы использовать для поля даты выхода от dirВ виде "datetime" или "text".

Тип операционной системы, работающей на сервере SFTP в виде любого "unix" или "Windows".

Локаль для чтения дат от удаленного сервера в виде строкового скаляра или вектора символов.

ServerLocale значение может быть вектором символов или строковым скаляром в форме xx_YY, где xx строчный ISO 639-1 двухбуквенный код, который задает язык и YY прописная альфа ISO 3166-1 2 кода, которые задают страну.

Эта таблица приводит некоторые общие значения для локали.

Локаль ЯзыкСтрана
"de_DE"Немецкий языкГермания
"en_GB"Английский языкСоединенное Королевство
"en_US"Английский языкСоединенные Штаты
"es_ES"Испанский языкИспания
"fr_FR"Французский языкФранция
"it_IT"Итальянский языкИталия
"ja_JP"Японский языкЯпония
"ko_KR"Корейский языкКорея
"nl_NL"Нидерландский языкНидерланды
"zh_CN"Китайский язык (упрощен)Китай

Как проанализировать команду СПИСКА выход от FTP-сервера в виде указателя на функцию. Значением по умолчанию является любой @matlab.io.ftp.parseDirListingForUnix или @matlab.io.ftp.parseDirListingForWindows, В зависимости от операционной системы сервера.

Можно также задать пользовательский указатель на функцию. Пользовательский указатель на функцию должен иметь три входных параметров:

  1. Список записей каталога в виде вектора строки.

  2. Локаль сервера в виде строкового скаляра.

  3. Тип данных для данных о дате и времени в виде "datetime" или "text".

Выход пользовательского указателя на функцию должен быть массивом структур размера m- 1, где m количество элементов в папке. Поля структуры должны совпадать с полями структуры, возвращенной dir functionName isdir, bytesдата, и datenum. Для получения дополнительной информации об этих полях смотрите dir страница ссылки на функцию.

Если значение по умолчанию приводит к ошибке при ссылке на неспособность проанализировать dir выведите, задайте этот аргумент значения имени. Этот аргумент должен быть правильно задан, чтобы использовать объектные функции та ссылка dir.

Функциональная подпись

Пользовательская функция записи должна принять три входных параметра, список записей каталога, entries, локаль сервера, serverLocale, и тип данных для данных о дате и времени, datetimeType:

function listing = myFormatFcn(entries,serverLocale,datetimeType)

Функция, взятая в качестве примера,

Соедините записи в массив ячеек, который будет введен к textscan. Предварительно выделите struct. Получите отдельные части от textscan вывод . Создайте struct, заполнив соответствующие поля.

function listing = myFormatFcn(entries,serverLocale,datetimeType)
    entries = join(entries,newline);
    out = textscan(entries,"%s%d%3c%d%s","MultipleDelimsAsOne",true);
    structSize = numel(out{1});
    listing = struct("name",cell(structSize,1),"isdir",zeros(1,1), ...
        "bytes",zeros(1,1),"date",'',"datenum",zeros(1,1));
    monthName = string(out{3});
    day = string(out{4});
    time = string(out{5});
    names = out{1};
    bytes = out{2};
    for ii = 1 : structSize
        listing(ii).name = names{ii};
        listing(ii).isdir = false;
        listing(ii).bytes = bytes(ii);
        makeDate = day(ii) + "-" + monthName(ii) + " " + ...
            time(ii);
        thisDate = datetime(makeDate,"InputFormat","dd-MMM HH:mm", ...
            "Locale",serverLocale);
        if datetimeType == "text"
            listing(ii).date = datestr(thisDate);
        else
            listing(ii).date = thisDate;
        end
        listing(ii).datenum = datenum(thisDate);    
    end
end

Функции объекта

cdИзмените или просмотрите текущую папку на SFTP или FTP-сервере
closeЗакройте связь с SFTP или FTP-сервером
deleteУдалите файл на SFTP или FTP-сервере
dirПеречислите содержание папки на SFTP или FTP-сервере
mgetЗагрузите файлы с SFTP или FTP-сервера
mkdirСделайте новую папку на SFTP или FTP-сервере
mputЗагрузите файл или папку к SFTP или FTP-серверу
renameПереименуйте файл на SFTP или FTP-сервере
rmdirУдалите папку на SFTP или FTP-сервере

Примеры

свернуть все

Свяжите с сервером SFTP в качестве примера.

s = sftp("sftp.example.net","jsmith")
  SFTP with properties:

                         Host: "sftp.example.net"
                     Username: "jsmith"
                         Port: 22
                 ServerSystem: "Windows"
                 DatetimeType: "datetime"
                 ServerLocale: "en_US"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForWindows
       RemoteWorkingDirectory: "/home/jsmith"

Откройте связь с сервером SFTP путем создания объекта SFTP. Загрузите файл и перечислите содержимое подпапок на сервере с помощью объекта SFTP. В конце сеанса SFTP закройте связь.

Во-первых, свяжите с сервером SFTP в качестве примера.

s = sftp("sftp.example_galapagos.net","jsmith","password","PaSsWoRd123")
  SFTP with properties:

                         Host: "sftp.example_galapagos.net"
                     Username: "jsmith"
                         Port: 22
                 ServerSystem: "unix"
                 DatetimeType: "datetime"
                 ServerLocale: "en_US"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForUnix
       RemoteWorkingDirectory: "/home/jsmith"

Перечислите содержимое папки верхнего уровня.

dir(s)
 
air_quality                  fish                        insects                       README.txt
birds                        INDEX.txt                   mammals                       reptiles
climate                      index.html                  rainfall                      sftp.html
 

Загрузите файл README.txt с сервера SFTP. mget функционируйте загружает копию на вашу текущую папку MATLAB®.

mget(s,"README.txt");

Считайте содержимое своей копии README.txt использование readlines функция. Просмотрите первые три линии.

readme = readlines("README.txt");
readme(1:3)
ans = 4×1 string
    "                 Welcome to the "
    "    Galapagos Research Institute Data Center "
    "                    SFTP area"

Перечислите содержимое подпапки с помощью dir функция.

dir(s,"home/jsmith/birds")
 
albatrosses                 ducks                       herons                     parrots 
avocets_stilts              falcons                     kingfishers                pelicans
barn_owls                   flamingos                   mockingbirds               penguins 
blackbirds                  frigatebirds                nightjars                  pheasants 
boobies                     grebes                      northern_storm_petrels     pigeons 
cardinal grosbeaks          guineafowl                  osprey                     plovers 
cormorants                  gulls                       owls                       rails
cuckoos                     hawks                       oystercatcher              sandpipers
 

Превратитесь в подпапку с помощью cd функция. Выход от cd путь к текущей папке на сервере SFTP, не ваша текущая папка MATLAB.

cd(s,"home/jsmith/birds/herons")
ans = 
"home/jsmith/birds/herons"

Перечислите содержимое текущей папки.

dir(s)
documentation             great_egret_data              migration_patterns
great_blue_heron_data     green_heron_data              nesting_behaviors 

Закройте связь с сервером SFTP. Также можно закрыть связь путем удаления объекта SFTP или освобождения времени соединения.

close(s)

Свяжите с сервером SFTP в качестве примера. Задайте локаль сервера как Соединенное Королевство. Задайте сервер SFTP LIST команда выход, который будет проанализирован относительно Windows с помощью аргумента "DirParserFcn" значения имени.

s = sftp("sftp.example_london.net","jsmith","password",...
"PaSsWoRd123","ServerLocale","en_GB","DirParserFcn",... 
@matlab.io.ftp.parseDirListingForWindows)
  SFTP with properties:

                         Host: "sftp.example_london.net"
                     Username: "jsmith"
                         Port: 22
                 ServerSystem: "Windows"
                 DatetimeType: "datetime"
                 ServerLocale: "en_GB"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForWindows
       RemoteWorkingDirectory: "/home/jsmith"

Свяжите с сервером SFTP в качестве примера. Сообщите объекту SFTP к датам возвращения как текст.

s = sftp("sftp.example.net","jsmith","DatetimeType","text")
  SFTP with properties:

                         Host: "sftp.example.net"
                     Username: "jsmith"
                         Port: 22
                 ServerSystem: "Windows"
                 DatetimeType: "text"
                 ServerLocale: "en_US"
                 DirParserFcn: @matlab.io.ftp.parseDirListingForWindows
       RemoteWorkingDirectory: "/home/jsmith"

Просмотрите свойство даты dir вывод .

d = dir(s);
d.date
ans =

    '03-Dec-2015'

Ограничения

  • Объект SFTP не поддерживает настройки прокси-сервера.

Советы

  • Передайте ~ символ к cd функция, чтобы перейти к папке входа в систему.

Введенный в R2021a