не удается извлечь файл, загруженный на FTP-сервер

Вы хотите, чтобы первые две строки соответствовали либо product:, либо serial:. Если это так, вы можете попробовать:

$ sudo lshw | grep -Em2 'serial:|product:'
    product: 20FWCTO1WW (LENOVO_MT_20FW_BU_Think_FM_ThinkPad T460p)
    serial: PF0P1EUH

В качестве альтернативы, grep все строки, которые соответствуют любой из целевых строк, а затем использовать head для печати только первых двух:

$ sudo lshw | grep -E 'serial:|product:' | head -n2
    product: 20FWCTO1WW (LENOVO_MT_20FW_BU_Think_FM_ThinkPad T460p)
    serial: PF0P1EUH

Конечно , оба эти подхода предполагают, что у вас никогда не будет второго product: перед первым serial: и наоборот.

1
24.09.2016, 14:52
2 ответа

Вероятно, у вас уже есть сообщения об ошибках, которых вы просто не видите при запуске этого сценария.

Захватить весь вывод в журнал, выполнив его с помощью
script.sh> log.txt 2> & 1

Последняя часть перенаправляет stderr на stdout, в данном случае log.txt

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

0
28.01.2020, 01:10

Ваш сценарий должен установить двоичный файл (после команд quote ). В противном случае для этого скрипта будет использоваться текстовый режим.

Если бы он был интерактивным, ftp-клиент, который я только что тестировал, перейдет в бинарный режим. Но не тогда, когда он не интерактивен.

Вот что я проверил / и исправил:

#!/bin/sh
ftp -in invisible-island.net <<EOF
quote USER anonymous
quote PASS anonymous
binary
cd cproto
get cproto.tar.gz
bye
EOF
0
28.01.2020, 01:10

Теги

Похожие вопросы