gpt4 book ai didi

sql - Perl SSH 到服务器并执行 SQL 查询

转载 作者:行者123 更新时间:2023-12-02 14:17:23 25 4
gpt4 key购买 nike

我正在使用 Net::OpenSSH perl 模块对安装了 sql 的服务器执行 ssh。

与 ssh 服务器的连接发生在此处。

这是我通过 ssh 连接到服务器的方式:

my $ssh = Net::OpenSSH->new("$user:$passwd\@$host");
$ssh->error and die "Couldn't establish SSH connection: ". $ssh->error;

但是在连接到 sql server 并执行查询时,我收到以下消息。
**********************************************
* unixODBC - isql *
**********************************************
* Syntax *
* *
* isql DSN [UID [PWD]] [options] *
* *
* Options *
* *
* -b batch.(no prompting etc) *
* -dx delimit columns with x *
* -x0xXX delimit columns with XX, where *
* x is in hex, ie 0x09 is tab *
* -w wrap results in an HTML table *
* -c column names on first row. *
* (only used when -d) *
* -mn limit column display width to n *
* -v verbose. *
* -lx set locale to x *
* -q wrap char fields in dquotes *
* -3 Use ODBC 3 calls *
* -n Use new line processing *
* -e Use SQLExecDirect not Prepare *
* -k Use SQLDriverConnect *
* --version version *
* *
* Commands *
* *
* help - list tables *
* help table - list columns in table *
* help help - list all help options *
* *
* Examples *
* *
* isql WebDB MyID MyPWD -w < My.sql *
* *
* Each line in My.sql must contain *
* exactly 1 SQL command except for the *
* last line which must be blank (unless *
* -n option specified). *
* *
* Please visit; *
* *
* http://www.unixodbc.org *
* nick@lurcher.org *
* pharvey@codebydesign.com *
**********************************************

我的代码如下所示:
$result = $ssh->capture("isql -SWebDB -UMyID -PMyPWD -w2222 < query.sql");
$ssh->error and warn "operation didn't complete successfully: ". $ssh->error;

在哪里 query.sql我已经放置在我正在执行 ssh 的远程服务器中。

我在想 $ssh->capture(....); 中是否缺少语法或者我们在 Net::OpenSSH 中有任何其他功能吗?运行 SQL 查询。因为通过 $ssh->capture(....);如果我通过任何脚本或 unix 命令(例如:ls),它完全可以正常工作。所以我怀疑 Net::OpenSSH中是否有任何功能运行 sql 查询。需要你们的意见。

最佳答案

如果您尝试使用无效的命令行参数运行程序,这看起来就像程序会显示的那种屏幕。这是一个帮助屏幕,上面写着“不要那样运行我 - 这是我的有效选项”。

这是你的命令:

isql -SWebDB -UMyID -PMyPWD -w2222

这是帮助屏幕中的示例命令:
isql WebDB MyID MyPWD -w

我不确定你从哪里得到你的命令行,但有一些区别。
  • isql没有 -S选项。相反,您只需将数据库名称作为参数。
  • isql没有 -U选项。相反,您只需将用户名作为参数。
  • isql没有 -P选项。相反,您只需将密码作为参数提供。
  • isql有一个 -w选项,但它看起来不需要参数。这只是一个开/关标志。

  • 您需要更改命令行,使其看起来更像帮助文本中给出的示例。

    更新:但最好的选择可能是使用 isql的网络能力。在本地服务器上运行它并远程连接到数据库服务器。

    关于sql - Perl SSH 到服务器并执行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408959/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com