emacs on Windows + sql + ssh
我们的大学运行 Oracle 数据库服务器。我们通过 SSH 使用校园用户名/密码登录,然后自动启动 rlwrap sqlplus,我们必须使用另一个用户名和密码再次登录到数据库应用程序。
我想在 Windows 上使用 Emacs 在此服务器上编辑和运行简单的 SQL 脚本。我已经能够使用 Tramp 在其他 SSH 服务器上编辑文件,但由于某种原因(很可能是 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.el 来使 Tramp 工作,这可能很重要,也可能不重要。我对 Emacs Lisp 知之甚少。
- 当然,这样做的方法是与您的系统/网络管理员交谈?附言您可以使用 HOST 命令从 SQL*Plus 调用操作系统命令;但不能保证您将拥有写入文件的权限。
解决方案是编辑服务器上的 .bashrc 文件,使 SQLPlus 不会自动启动。
Tramp-over-SSH 通过启动 SSH 会话然后向其发送 shell 命令来工作。因此,如果您的 SSH 会话无法运行 shell,您将无法使用 Tramp-over-SSH 访问您的远程文件。
至于从 Emacs 启动 SQL,这样做的方法是将 sql-oracle-program 设置为一些执行必要命令的脚本,在您的情况下可能类似于 ssh <oracle-server>.
- 服务器确实运行一个shell;我可以通过使用 Ctrl-D 退出数据库用户名提示来访问它。
-
@marczellm,如果您可以访问shell,也许您可??以编辑登录脚本(如果您使用的是bash,则为.bash_profile)并删除sql会话的自动启动。如果登录脚本受到保护(/etc/profile),您可以告诉tramp 在收到SQL 提示时发送一个^D。
-
@juanleon 使用哪个变量,我是否按字面意思输入 ^D?