我需要使用Visual Basic应用程序的Unix服务器上执行命令的帮助。 我使用Visual Basic快讯2010年。
PS我可以连接到服务器使用systems.net.sockets
,但不能发送执行命令。
我愿意尝试任何不同的方法,我只需要知道我能做到这一点。
我需要使用Visual Basic应用程序的Unix服务器上执行命令的帮助。 我使用Visual Basic快讯2010年。
PS我可以连接到服务器使用systems.net.sockets
,但不能发送执行命令。
我愿意尝试任何不同的方法,我只需要知道我能做到这一点。
我能想到的两种方法来实现:
有一个程序一样安装在系统上腻子和使用腻子和发送你的命令,这样做的SSH调用服务器(应用程序之外)。 这将需要一些提升的权限在您的应用程序,因为这将需要直接访问系统。 在我看来,这就是“丑”的方式来做到这一点。
查找VB SSH库。 我发现这一个 ,但必须有更多的。 这将允许您创建一个SSH连接到Unix框,并越过要运行的命令。 这将是“最好的””的方式。
编辑:
这其实并不重要,这是CSHARP。 您可以下载的Visual C#2010 Express和开放Renci.SshNet并构建它。 一旦它的建成,你会得到一个DLL,然后可以添加作为您的VB项目的引用。 一个痛苦的一点点,但一个很小的代价使用Express版本。 :)
这里的SSH库在Visual C#2010速成与构建开放运行的截图。 你可以看到“构建成功”左下角:
一旦你拥有了它作为参考,那么你可以使用库提ssh连接到服务器,并运行命令。 下面是一些示例代码。 我创建了一个VB Web应用程序,添加该DLL作为参考,并添加一个click事件一个按钮,吐出的结果变成一个标签控件:
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窗体应用程序的例子。 我加了一个按钮和一个标签的形式,并添加上面的按钮单击事件中的代码。 然后我加入到DLL(库)的参考,我从C#2010 Express创建。
这是将基准的屏幕截图:
下面是该参考项目属性已经添加的截图:
接下来,我跑了该项目,并单击按钮。 到UNIX机器上的连接被制成,并且命令的结果(在该情况下“LS -lthr”)被放置在标签。 我登录为根(不推荐),并从/根/目录运行的命令。 这就是为什么没有太多的存在。