Ошибка Не удалось привязать сокет: в доступе отказано
могло быть из-за разрешения на запись в каталог, в который записывается файл сокета.
В моем случае мне пришлось chmod
the / dir / of / socket / fie /
на 777
. После этого изменения процесс начался успешно.
IMO изменять разрешения для / usr / local / nagios
не требуется .. это единственный каталог, в который процесс ndo2db
пытается записать файл сокета. [Обычно это ../var, но это можно настроить где-нибудь еще в конфигурационных файлах ndo
. ]
изменить строкуmv out.txt /home/results/out.txt
-
cat out.txt >> /home/results/out.txt
, чтобы получить все три результата в одном файле. Потому что с командой mv
файл каждый раз перезаписывается. Вот почему `вы получаете только последний результат.
Если вы не хотите хранить старые данные в этом файле, просто
rm /home/results/out.txt
в начале скрипта
echo -e `/opt/mssql-tools/bin/sqlcmd... -o "out.txt"`
Здесь вы используете подстановку команд, чтобы перехватить вывод sqlcmd
, а затем снова распечатать его с помощью эха. Это редко бывает полезно, возможно, вы могли бы просто запустить /opt/mssql-tools/bin/sqlcmd... -o "out.txt"
без подстановки команд или echo
.(Однако есть небольшая разница: подстановка команды без кавычек + эхо преобразует все пробелы в одиночные пробелы.)
Теперь, предположив, что вы хотите объединить все выходные данные всех вызовов sqlcmd
в один файл, вы можете использовать добавление выходных данных (>>
), чтобы направить результат непосредственно в окончательный файл.
Если sqlcmd
нормально выводит на стандартный вывод, вы можете просто выполнить:
/opt/mssql-tools/bin/sqlcmd -S server_name -U username -P user \
-d db -Q "$SELECT_QUERY_1" | sed "s/^[ \t]*//" >> /home/results/out.txt
Если это не поддерживается, вы можете использовать /dev/stdout
в качестве выходного файла:
/opt/mssql-tools/bin/sqlcmd -S server_name -U username -P user \
-d db -Q "$SELECT_QUERY_1" -o /dev/stdout | sed "s/^[ \t]*//" >> /home/results/out.txt