2013-09-24 4 views
0

Наш университет запускает сервер базы данных Oracle. Мы входим в систему, используя имя пользователя/пароль в кампусе через SSH, затем автоматически запускается rlwrap sqlplus, и нам нужно снова войти в систему, используя приложение с другим именем пользователя и паролем.emacs на Windows + sql + ssh

Я хотел бы использовать Emacs для Windows, чтобы редактировать и запускать простые сценарии SQL на этом сервере. Я уже могу редактировать файлы на других SSH-серверах с помощью Tramp, но по какой-то причине (скорее всего, автоматический запуск sqlplus) я не могу сделать это на сервере базы данных. Emacs висит с Tramp: Waiting for prompts from remote shell.

Я также хотел бы, чтобы запустить интерактивный сеанс SQL в буфере, поэтому я вставил код в https://stackoverflow.com/a/17277015/1813487 к моим .emacs с соответствующими изменениями (а именно, изменить все вхождения mysql в oracle). Когда я делаю M-x sql-oracle, Emacs висит с Tramp: Sending Password.

Есть ли способ исправить/настроить все это или единственный способ убедить администратора отключить автоматический запуск sqlplus?


Это может или не может быть важно, чтобы я мог сделать только Tramp работу перекомпиляции tramp.el, как было предложено here. У меня мало что известно об Emacs Lisp.

+0

Несомненно, способ сделать это - поговорить с администраторами вашей системы/сети? Постскриптум Вы можете вызывать команды OS из SQL * Plus с помощью команды HOST; но нет никаких гарантий, что у вас будут привилегии для записи файла. – Ben

ответ

0

Решение должно было отредактировать файл .bashrc на сервере, чтобы SQLPlus не запускался автоматически.

0

Tramp-over-SSH работает, начиная сеанс SSH, а затем отправляя его командам оболочки. Поэтому, если ваши сеансы SSH не могут запускать оболочку, вы не сможете использовать Tramp-over-SSH для доступа к удаленным файлам.

Что касается запуска SQL из Emacs, то для этого нужно установить sql-oracle-program в некоторый скрипт, который выполняет необходимые команды, в вашем случае, вероятно, что-то вроде ssh <oracle-server>.

+0

Сервер запускает оболочку; Я могу получить к нему доступ, выйдя из приглашения имени пользователя базы данных с помощью 'Ctrl-D'. – marczellm

+0

@marczellm, если вы можете получить доступ к оболочке, возможно, вы можете редактировать сценарий входа (.bash_profile, если вы используете bash) и удалить автоматический запуск сеанса sql. Если скрипт входа в систему защищен (/ etc/profile), вы можете указать tramp отправить a^D, когда он получит запрос SQL. – juanleon

+0

@juanleon Какую переменную использовать для этого, и я буквально набираю '^ D'? – marczellm

Смежные вопросы