Добрый день, коллеги.
На удаленном сервере (УС) запускаю программу, написанную на 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 также передаются в консоль ГС.
Подозреваю, что при удаленном запуске окружение берется с ГС. Как мне запустить полностью автономно, отключившись от ГС?
Запуск автономно программы на удаленном сервере. (Рабочие и отдадочные сообщения почему-то возвращаются на главный сервер.)
Модератор: Bizdelnick
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Запуск автономно программы на удаленном сервере.
Это как? GCC - это компилятор.
А язык, видимо, C/C++ всё-таки.
А успешный запуск, когда работает и делает запросы - это имеется в виду запуск на локальной машине?
Это shell-скрипт? Покажите содержимое.
Возможно, просто путь в скрипте прописать надо.
Кроном. Или скриптами вроде тех, которые скрипты инициализации.
Но вообще, должно запускаться и так.
Если у Вас для запуска скрипт-обертка, и Вы этот скрипт просто закинули на сервер,
то может и не сработать. Пути в скрипте лучше прописать полностью.
Или бинарник искомый на удаленной системе чуть по-другому называется.
Добавлено (12:14):
Хотя при таком варианте запуска, наверное, да, будут читаться локальные значения.
Вам нужно скрипт закинуть на удаленную машину, залогиниться, и запустить его оттуда.
Последний раз редактировалось Hephaestus 08.06.2020 15:26, всего редактировалось 1 раз.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Запуск автономно программы на удаленном сервере.
Нет. Передаются только переменные, прописанные в конфиге ssh в параметре SetEnv, обычно это LANG LC_*. Но когда Вы запускаете команду через ssh, передавая её аргументом, он запускает оболочку в неинтерактивном режиме, поэтому она не включает файлы /etc/profile, ~/.profile и другие, специфичные для оболочки (например ~/.bash_profile и ~/.bash_login для bash), которые включаются в интерактивном режиме. Если где-то там прописано добавление в PATH пути к sqlplus, оно не сработает.
Лучше всего пропишите в скрипте абсолютный путь.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Запуск автономно программы на удаленном сервере.
На удаленной машине локально все работает отлично, пути внутри прописаны полностью.
При запуске через SSH c главного сервера(ГС) в консоль ГС идут все отладочные выводы, не находится sqlplus.
Документация говорит, что SSH собирает весь вывод. Можно ли другим способом запустить на удаленной машине программу?
command="echo -e \"set pagesize 0\nset linesize 1024\nconn "+connect+"\n"+cmd+";\" | sqlplus -s /nolog";
FILE* pipe = popen(command.c_str(), "r");
При запуске через 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: Запуск автономно программы на удаленном сервере.
Кто ж на плюсах так пишет? И зачем вообще вызывать из плюсов sqlplus? Есть же либа, гугл подсказывает, что называется OCCI. А для таких вот мелких вещей пишутся шелл-скрипты.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Запуск автономно программы на удаленном сервере.
На биллинговые системы имеются строгие ограничения и ОС ставится обрубленная донельзя. Админы сидят в другом федеральном округе и общение с ними только через службу безопасности, т.е. никак. Потому пишу на подручных средствах. А sqlplus для обмена информацией с Win приложениями через оракловую таблицу.
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Запуск автономно программы на удаленном сервере.
Да оно бы может и сработало даже в таком виде, если бы к sqlplus был полный путь,
то есть что-то вродеНо вообще, конечно, это жесть.
А shell-скрипты там нельзя, значит?
И либу тоже нельзя?
то есть что-то вроде
Код: Выделить всё
command="echo -e \"set pagesize 0\nset linesize 1024\nconn "+connect+"\n"+cmd+";\" | /usr/bin/sqlplus -s /nolog";
А shell-скрипты там нельзя, значит?
И либу тоже нельзя?
Спасибо сказали:
Re: Запуск автономно программы на удаленном сервере.
Спасибо, продвинулся, но окружение не задано:
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 параллельно работающих удаленных сервера, и администрировать изменения на них в скриптах чревато человеческими ошибками.
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 параллельно работающих удаленных сервера, и администрировать изменения на них в скриптах чревато человеческими ошибками.