Запуск автономно программы на удаленном сервере. (Рабочие и отдадочные сообщения почему-то возвращаются на главный сервер.)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
puncher
Сообщения: 4

Запуск автономно программы на удаленном сервере.

Сообщение puncher »

Добрый день, коллеги.
На удаленном сервере (УС) запускаю программу, написанную на gcc, работает корректно, отлично делает запросы к базе. Sqlplus установлен в консольном варианте и на главном сервере (ГС) и на УС.
./eraser ITCTEST nw L
Если же запускаю через ssh с главного сервера (ГС) в консоль ГС выдается ошибка: не находится sqlplus.
ssh -q msk-app51 /data/scripts/eraser ITCTEST nw L
sh: line 3: sqlplus: command not found
И все отладки в std::out также передаются в консоль ГС.
Подозреваю, что при удаленном запуске окружение берется с ГС. Как мне запустить полностью автономно, отключившись от ГС?
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Запуск автономно программы на удаленном сервере.

Сообщение Hephaestus »

puncher писал(а):
08.06.2020 11:48
написанную на gcc
Это как? GCC - это компилятор.
А язык, видимо, C/C++ всё-таки.
puncher писал(а):
08.06.2020 11:48
./eraser ITCTEST nw L
Если же запускаю через ssh с главного сервера (ГС) в консоль ГС выдается ошибка: не находится sqlplus.
А успешный запуск, когда работает и делает запросы - это имеется в виду запуск на локальной машине?
puncher писал(а):
08.06.2020 11:48
ssh -q msk-app51 /data/scripts/eraser ITCTEST nw L
sh: line 3: sqlplus: command not found
Это shell-скрипт? Покажите содержимое.
Возможно, просто путь в скрипте прописать надо.
puncher писал(а):
08.06.2020 11:48
Как мне запустить полностью автономно, отключившись от ГС?
Кроном. Или скриптами вроде тех, которые скрипты инициализации.
Но вообще, должно запускаться и так.
Если у Вас для запуска скрипт-обертка, и Вы этот скрипт просто закинули на сервер,
то может и не сработать. Пути в скрипте лучше прописать полностью.
Или бинарник искомый на удаленной системе чуть по-другому называется.
Добавлено (12:14):
Hephaestus писал:
08.06.2020 12:12
ssh -q msk-app51 /data/scripts/eraser ITCTEST nw L
Хотя при таком варианте запуска, наверное, да, будут читаться локальные значения.
Вам нужно скрипт закинуть на удаленную машину, залогиниться, и запустить его оттуда.
Последний раз редактировалось Hephaestus 08.06.2020 15:26, всего редактировалось 1 раз.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запуск автономно программы на удаленном сервере.

Сообщение Bizdelnick »

puncher писал(а):
08.06.2020 11:48
Подозреваю, что при удаленном запуске окружение берется с ГС.
Нет. Передаются только переменные, прописанные в конфиге ssh в параметре SetEnv, обычно это LANG LC_*. Но когда Вы запускаете команду через ssh, передавая её аргументом, он запускает оболочку в неинтерактивном режиме, поэтому она не включает файлы /etc/profile, ~/.profile и другие, специфичные для оболочки (например ~/.bash_profile и ~/.bash_login для bash), которые включаются в интерактивном режиме. Если где-то там прописано добавление в PATH пути к sqlplus, оно не сработает.
Лучше всего пропишите в скрипте абсолютный путь.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
puncher
Сообщения: 4

Re: Запуск автономно программы на удаленном сервере.

Сообщение puncher »

На удаленной машине локально все работает отлично, пути внутри прописаны полностью.
При запуске через SSH c главного сервера(ГС) в консоль ГС идут все отладочные выводы, не находится sqlplus.
Документация говорит, что SSH собирает весь вывод. Можно ли другим способом запустить на удаленной машине программу?
Добавлено (13:13):
sqlplus вызываю в подпрограмме на с++:
command="echo -e \"set pagesize 0\nset linesize 1024\nconn "+connect+"\n"+cmd+";\" | sqlplus -s /nolog";
FILE* pipe = popen(command.c_str(), "r");
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Запуск автономно программы на удаленном сервере.

Сообщение Bizdelnick »

puncher писал(а):
08.06.2020 13:07
sqlplus вызываю в подпрограмме на с++:
command="echo -e \"set pagesize 0\nset linesize 1024\nconn "+connect+"\n"+cmd+";\" | sqlplus -s /nolog";
FILE* pipe = popen(command.c_str(), "r");
:doh:
Кто ж на плюсах так пишет? И зачем вообще вызывать из плюсов sqlplus? Есть же либа, гугл подсказывает, что называется OCCI. А для таких вот мелких вещей пишутся шелл-скрипты.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
puncher
Сообщения: 4

Re: Запуск автономно программы на удаленном сервере.

Сообщение puncher »

На биллинговые системы имеются строгие ограничения и ОС ставится обрубленная донельзя. Админы сидят в другом федеральном округе и общение с ними только через службу безопасности, т.е. никак. Потому пишу на подручных средствах. А sqlplus для обмена информацией с Win приложениями через оракловую таблицу.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Запуск автономно программы на удаленном сервере.

Сообщение Hephaestus »

Да оно бы может и сработало даже в таком виде, если бы к sqlplus был полный путь,
то есть что-то вроде

Код: Выделить всё

command="echo -e \"set pagesize 0\nset linesize 1024\nconn "+connect+"\n"+cmd+";\" | /usr/bin/sqlplus -s /nolog";
Но вообще, конечно, это жесть.
А shell-скрипты там нельзя, значит?
И либу тоже нельзя?
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
puncher
Сообщения: 4

Re: Запуск автономно программы на удаленном сервере.

Сообщение puncher »

Спасибо, продвинулся, но окружение не задано:
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

Shell скрипты можно, подумаю над этим. У меня 8 параллельно работающих удаленных сервера, и администрировать изменения на них в скриптах чревато человеческими ошибками.
Спасибо сказали:
Ответить