gpt4 book ai didi

vb.net - 通过 Visual Basic 应用程序在 Unix 服务器上执行命令

转载 作者:行者123 更新时间:2023-12-01 15:15:03 26 4
gpt4 key购买 nike

我需要有关使用 Visual Basic 应用程序在 Unix 服务器上执行命令的帮助。我正在使用 Visual Basic Express 2010。

附言我可以使用 systems.net.sockets 连接到服务器,但无法发送要执行的命令。

我愿意尝试任何不同的方法,我只需要知道如何做到这一点。

最佳答案

我可以想到两种方法来实现这一点:

  1. 在系统上安装像 Putty 这样的程序,然后使用 Putty 向服务器(在应用程序外部)发出 SSH 调用,并以这种方式发送您的命令。这将需要对您的应用程序提升一些权限,因为它必须直接访问系统。在我看来,这是执行此操作的“丑陋”方式。

  2. 查找 VB SSH 库。我找到了 this one但必须有更多。这将允许您创建到 Unix 框的 SSH 连接并传递您要运行的命令。这将是“最佳”方式。

编辑:

它是 CSHARP 并不重要。您可以下载 Visual C# 2010 Express 并打开 Renci.SshNet 并构建它。构建完成后,您将获得一个 dll,然后您可以将其添加为对 VB 项目的引用。有点痛苦,但使用 Express 版本需要付出很小的代价。 :)

这是在构建运行时在 Visual C# 2010 Express 中打开的 ssh 库的屏幕截图。您可以在左下角看到“构建成功”: screenshot of build

将其作为引用后,您就可以使用该库与服务器建立 ssh 连接并运行您的命令。这是一些示例代码。我创建了一个 VB web 应用程序,添加了 dll 作为引用,并向按钮添加了一个点击事件,该按钮将结果吐到标签控件中:

Protected Sub btnSSHTest_Click(sender As Object, e As EventArgs) Handles btnSSHTest.Click

'Create the objects needed to make the connection'
Dim connInfo As New Renci.SshNet.PasswordConnectionInfo("hostname", "username", "password")
Dim sshClient As New Renci.SshNet.SshClient(connInfo)

'Need to hold the command'
Dim cmd As Renci.SshNet.SshCommand


Using sshClient
'connect to the server'
sshClient.Connect()

'Run the command and put the results into the cmd object. In this case'
'I am just running a directory list'
cmd = sshClient.RunCommand("ls -lthr")

'my web page had a label control on it. I placed the results of the cmd into'
'the label'
lblResult.Text = cmd.Result

'Close the connection.'
sshClient.Disconnect()
End Using

End Sub

编辑:

为了确保它在非 Web 应用程序中工作,我在使用 Vb 2010 Express 创建的 Windows 窗体应用程序中做了这个例子。我在表单中添加了一个按钮和一个标签,并将上面的代码添加到按钮单击事件中。然后我添加了对我从 C# 2010 Express 创建的 DLL(库)的引用。

这是添加引用的截图: how to add a reference

这是项目属性的屏幕截图,显示已添加引用: screenhot showing the reference in the project

接下来,我运行项目并单击按钮。与 unix box 的连接已建立,命令的结果(在本例中为“ls -lthr”)被放置在标签中。我以 root 身份登录(不推荐)并从/root/目录运行命令。这就是为什么那里没有太多。 application running

关于vb.net - 通过 Visual Basic 应用程序在 Unix 服务器上执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445004/

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