从Windows运行Linux脚本时如何禁止提示?

时间:2013-08-01 11:56:07

标签: windows vbscript plink

我编写了以下VBScript,以便使用plink.exe工具从Windows运行Linux脚本。

用户 - root1 , 密码 - adhdh

我的VB脚本:

Const Host = "110.18.3.32"
Set Sh = CreateObject("WScript.Shell")
Const cstrSftp1="""C:\Documents and Settings\Administrator\Desktop\plink.exe"""
strCommand11 = cstrSftp1  & " -ssh -pw " & " adhdh " & "root1@" & Host & " /var/tmp/script "  
Sh.Run "cmd /k " & strCommand11, 1, True
Set Sh = Nothing

但是没有什么问题

第一次运行此脚本时,我从plink收到以下提示:

  

将密钥存储在缓存中? (Y / N)

因此,为了通过添加echo y来解决此问题,我更改了脚本中的行,如下所示:

strCommand11 = echo y | cstrSftp1  & " -ssh -pw " & " adhdh " & "root1@" & Host & " /var/tmp/script "  

但在我运行新脚本后,它失败并出现此错误:

  

预期结束声明

我也试过

"echo y | cstrSftp1  "

但我还是得到了其他错误。

请在我的剧本中建议我需要更改的内容?

2 个答案:

答案 0 :(得分:0)

strCommand11 = "echo y | " & cstrSftp1 & " -ssh -pw " & " adhdh " & "root1@" & pHost & " /var/tmp/script " 

答案 1 :(得分:0)

使用echo y | plink.exe ...是解决此问题的一种相当笨拙的方法。最好将远程服务器的公共主机密钥(例如/etc/ssh/ssh_host_rsa_key.pub)导入注册表,以防止提示首先出现。有一个Python script用于将公钥从Linux主机上使用的格式转换为PuTTY在Windows注册表中使用的格式。您可以将转换后的值写入注册表,如下所示:

Const Host = "110.18.3.32"

Set sh = CreateObject("WScript.Shell")
sh.RegWrite "HKCU\Software\SimonTatham\PuTTY\SshHostKeys\rsa2@22:" & Host _
  , "0x10001,0x9b95f6ac6cf5...", "REG_SZ"

'rest of your code here