Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.27.172] |
|
Сообщ.
#1
,
|
|
|
Добрый день, коллеги.
Написал приложение на gcc, которое результат через sqlplus пишет в базу. На локальном сервере запуск из консоли ./eraser ITCTEST nw L выполняет все правильно. Удаленный же запуск выдает ошибку. $ ssh -q msk-itc-app51 /data/scripts/eraser ITCTEST nw L sh: line 3: sqlplus: command not found Впечатление, что удаленный запуск ищет sqlplus в другом окружении. Как мне запустить программу на другом сервере, чтобы она работала локально? |
Сообщ.
#2
,
|
|
|
Никак. ssh предполагает, что вы даете команду удаленному серверу выполнить что-то.
Установите sqlplus на удаленном сервере. |
Сообщ.
#3
,
|
|
|
В этом и проблема. На удаленном сервере все установлено, и если запускать на нем локально в консоли, то все работает корректно.
При запуске через ssh sqlplus на удаленном не находится, и отладочный вывод в std::out возвращается на главный сервер. Такое впечатление, что на удаленном сервере запускается только программа, а все окружение берется на главном сервере. Как мне отвязаться от него, и реализовать удаленный, автономный запуск? По принципу: запустил, отключился и забыл. |
Сообщ.
#4
,
|
|
|
sqlplus есть консольный вариант, есть GUI-шный. У вас какой??
если GUI-шный, то здесь нужно сделать проброс X-window протокола (параметр XWindowForwarding в sshd_config) + на стороне клиента развернуть X-server. Тогда вы будете запускать sqlplus на сервере, он будет там физически исполняться, его графика будет пробрасывать Вам на клиентский компьютер и Ваш локально установленный X-сервер будет ее отрисовывать. если консольный, то все должно работать из коробки (stdin/out/err ssh пробрасывается автоматически). |
Сообщ.
#5
,
|
|
|
На обоих серверах sqlplus консольный. С консоли сервера А запускаю приложение на сервере Б командой:
ssh -q msk-itc-app51 /data/scripts/eraser ITCTEST nw L И все отладочные выводы и сообщения об ошбке программы, запущенной удаленно на сервере Б, возвращает назад на сервер А. str_sql=select base, branch, nvl(options,'N') from Tarif_Log where trl_id=4807 sh: line 3: sqlplus: command not found tmp_str= sBase= sBranch= sOption= Почему возврат в консоль А? Мне нужно запустить на Б автономно и забыть о ней. |
Сообщ.
#6
,
|
|
|
А если так
ssh user@server_ip "/data/scripts/eraser ITCTEST nw L" |
Сообщ.
#7
,
|
|
|
К сожалению не помогло, все возвращается на главный сервер. Уже попробовал через промежуточный .sh файл, все цепочки отладок возвращаются в консоль на главный сервер.
|
Сообщ.
#8
,
|
|
|
SSH собирает вывод удаленного приложения согласно документации. Подскажите другой способ удаленного запуска программы.
|
Сообщ.
#9
,
|
|
|
Цитата puncher19 @ К сожалению не помогло, все возвращается на главный сервер. Что то ты явно не то делаешь. |
Сообщ.
#10
,
|
|
|
А! ну так у вас же не интерактивный запуск.
В таком режиме ssh не инициализирует профиль. А значит PATH у вас наверно только базовый системный. Подправьте скрипт, наверно. Сделайте echo $PATH Попробуйте полный путь до sqlplus прописать. В надо что-то сделать с PATH. |
Сообщ.
#11
,
|
|
|
Цитата grgdvo @ А! ну так у вас же не интерактивный запуск. В таком режиме ssh не инициализирует профиль. Инициируются энвайронменты учётки от которой ссшишься |
Сообщ.
#12
,
|
|
|
Это если PermitUserEnvironment=yes в sshd_config.
А он по дефолту off, и кто ставит on, должен сначала хорошо подумать. |
Сообщ.
#13
,
|
|
|
Всем спасибо за участие. Буду думать над другим вариантом решения.
|