我编写了以下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 "
但我还是得到了其他错误。
请在我的剧本中建议我需要更改的内容?
答案 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