2013-09-24 23 views
0

我們的大學運行Oracle數據庫服務器。我們使用校園用戶名/密碼通過SSH登錄,然後rlwrap sqlplus自動啓動,我們必須使用其他用戶名和密碼再次登錄到數據庫應用程序。Windows + sql + ssh上的emacs

我想在Windows上使用Emacs在此服務器上編輯和運行簡單的SQL腳本。我已經能夠使用Tramp編輯其他SSH服務器上的文件,但出於某種原因(很可能是sqlplus的自動啓動),我無法在數據庫服務器上執行此操作。 Emacs掛起Tramp: Waiting for prompts from remote shell

我也想運行緩衝液中的Interactive SQL會話,所以我插入的代碼在https://stackoverflow.com/a/17277015/1813487.emacs適當修改(即對mysql所有出現改變oracle)。當我做M-x sql-oracle時,Emacs掛起Tramp: Sending Password

有沒有辦法修復/配置所有這些,或者唯一的辦法是說服管理員禁用自動啓動sqlplus


它可能或者說,我只能通過重新編譯tramp.el的建議here使流浪者的工作可能並不重要。我對Emacs Lisp知之甚少。

+0

當然,這樣做的方法是與您的系統/網絡管理員交談?附:您可以使用HOST命令從SQL * Plus調用OS命令;但是不能保證你將有權寫入文件。 – Ben

回答

0

解決方案是編輯服務器上的.bashrc文件,以便SQLPlus不會自動啓動。

0

Tramp-over-SSH的工作方式是啓動SSH會話,然後發送它的shell命令。所以如果你的SSH會話無法運行一個shell,你將無法使用Tramp-over-SSH來訪問你的遠程文件。

至於從Emacs啓動SQL,要做到這一點的方法是將sql-oracle-program設置爲執行必要命令的腳本,在您的情況下可能類似於ssh <oracle-server>

+0

服務器運行一個shell;我可以通過用Ctrl-D退出數據庫用戶名提示來訪問它。 – marczellm

+0

@marczellm,如果你可以訪問shell,也許你可以編輯登錄腳本(如果你正在使用bash,.bash_profile),並刪除自動啓動的sql會話。如果登錄腳本受到保護(/ etc/profile),則可以讓tramp在收到SQL提示時發送^ D。 – juanleon

+0

@juanleon哪一個變量用於這個,並且我真的輸入'^ D'? – marczellm