Цитирование сложной командной строки с использованием bash через SSH - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь запустить удаленную команду, используя SSH, для Windows, но я хочу, чтобы результат был включен в check_generic, чтобы я мог поместить это в свой мониторинг Nagios, однако у меня возникают проблемы с цитированием команды и интересно, если кто-то может помочь.

Чтобы запустить команду нормально, я бы запустил:

ssh administrator@192.168.1.5 '"%PG_HOME%/thirdparty/pgsql-9.1/bin/psql.exe" -hlocalhost -p27778 -ddb_cache -Uuser -t -c "select count(*) from table where send_status = 4;"'

Мне нужен PG_HOME для расширения, что делает в приведенном выше.

Хорошо, теперь я хочу запустить его через скрипт bash с именем check_generic, для его запуска требуется параметр -e и некоторый анализ.

Однако проблема, которую я получаю, заключается в том, что удаленный компьютер Windows расширяет% PG_HOME%, а затем жалуется на место в командной строке, поскольку PG_HOME содержит «C: \ Program Files»

Другой проблемой является количество (*), поскольку оболочка хочет съесть скобки.

Я устал:

./check_generic -c '> 0' -e 'ssh administrator@192.168.1.5 \'"%PG_HOME%/thirdparty/pgsql-9.1/bin/psql.exe" -hlocalhost -p27778 -ddb_cache -Uuser -t -c "select count(*) from send where send_status = 4;"\''

Но он жалуется на неполную оболочку, и если я снимаю последнюю, '-t дается для проверки универсального вместо ssh

Есть идеи? Большое спасибо.

...