Как сказано в заголовке, я пытаюсь подключить несколько файлов (контент должен быть добавлен к существующим файлам на хосте) по одному ssh-соединению и получить возвращаемое значение для каждого, т.е. если этот кот для конкретного файла был успешным или нет. До сих пор я делал это для каждого файла отдельно, просто повторяя следующую команду для каждого и проверяя возвращаемое значение.
cat specific_file | ssh user@host -i /root/.ssh/id_rsa "cat >> result/specific_file"
Затем я просто проверял возвращаемое значение для каждой передачи (автоматически) и тем самым мог определить статус каждого файла. Мой вопрос: возможно ли это сделать через одно соединение ssh, но получить возвращаемое значение для каждого отдельного файла?
Заранее спасибо !
РЕДАКТИРОВАТЬ:
(b) Как вы можете видеть ниже, я генерирую команду для одного конкретного файла, а затем проверяю код возврата. Затем вызывается метод, содержащий эту часть программы, для различных типов данных.
Если файл был успешно зарегистрирован, он может быть удален из клиента, и разрешена (по-прежнему) дальнейшая регистрация в типе файла. Если файл превышает свои пределы, этот бит сбрасывается в другой части программы.
sprintf(command,"/bin/cat /root/%s%s | /usr/bin/ssh [email protected] -i"
" /root/.ssh/id_rsa \"/bin/cat >> result/%s%s\"", apmac,
ending_str[source], apmac, ending_str[dest]);
rc = system(command);
if(rc != 0)
{
sprintf(buffer, "[%i] - LOG ERROR from %s to %s CODE %i ", (int)time(0),
ending_str[source], ending_str[dest], rc);
sprintf(filename,"%s%s%s", LOCAL, apmac, ending_str[source]);
}
else
{
sprintf(filename,"%s%s%s", LOCAL, apmac, ending_str[source]);
remove(filename);
sprintf(buffer, "[%i] - LOG process from %s to %s ok", (int)time(0),
ending_str[source], ending_str[dest]);
switch(source)
{
case PROBE_FILE:
LOG_MASK_SET(globals->log_mask, LOG_MASK_PROB);
break;
case LIST_FILE:
LOG_MASK_SET(globals->log_mask, LOG_MASK_LIST);
break;
case SCAN_FILE:
LOG_MASK_SET(globals->log_mask, LOG_MASK_SCAN);
break;
default:
/* Other cases not YET considered */
break;
}
}
ВТОРОЕ РЕДАКТИРОВАНИЕ:
Я запускаю этот код на маршрутизаторе как часть программы. Обратите внимание, что мне не разрешено добавлять в систему новые библиотеки или неосновные функции. Кроме того, клиент ssh в самой системе не поддерживает режим «-M».