- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的一个脚本有问题。基本上它运行得非常顺利,但它需要一些来自 excel 文件的用户输入。用户可能会导致错误,这就是我的问题。
我的脚本通过 ssh 与 plink
连接(lil PuTTY) 到某些设备并向它们发送命令。
现在是真正的问题:如果有人只是拼错了 FQDN,脚本将继续执行,但我需要通过电子邮件报告一个进程失败。如果有人完全搞砸了 Excel 表,整个脚本就会失败——我需要再次知道。我已经设计了一些参数来向我发送电子邮件。唯一的问题是错误处理。
代码:
try {
$FQDN | foreach {
$directory = $dir[$counter]
$errorzahl = $error.count + [int]1
&$process -ssh -l $loginname[$counter] -pw $pw[$counter] $FQDN[$counter] "config global execute $cmd config ftp $filename $FTPADRESS $FTPLOGIN $FTPPW"
$names = $KN[$counter]
if ($error.Count -gt $errorzahl) {
$names = $KN[$counter]
$smtp.Send("$ErrorSender", "$ErrorRecipient", "Powershell Script Error",
"$Emailinhaltlow, Problems: $names")
}
$counter = $counter + [int]1
}
} catch {
$errornachricht = $_.Exception.Message
if ($_.Exception.Message) {
$smtp.Send("$ErrorSender", "$ErrorRecipient", "Powershell Error",
"$Emailinhalt, Probleme mit: $names")
unregister-scheduledjob -Name $jobname -Force
}
}
if ($error.Count -gt $errorzahl) {
$names = $KN[$counter]
$smtp.Send("$ErrorSender", "$ErrorRecipient", "Powershell Error",
"$Emailinhaltlow, Problems: $names")
}
foreach
中有一些小错误环形。
plink.exe : The server's host key is not cached in the registry. You
In C:\Users\USER\Desktop\VPNscript.ps1:10 Zeichen:1
+ &$process -ssh -l $loginname -pw $pw $FQDN "y
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (The server's ho...e registry. You:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 c2:ea:62:af:70:14:e4:f0:a0:79:88:45:85:fc:cd:cc
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)
plink.exe : Unable to open connection:
In Zeile:73 Zeichen:1
+ &$process -ssh -l $loginname[$counter] -pw $pw[$counter] $FQDN[$counter] "config ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Unable to open connection::String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Host does not exist
"y" | &$process -ssh -l $Loginname -pw $pw $FQDN
plink.exe : The server's host key is not cached in the registry. You
In Zeile:6 Zeichen:7
+ "y" | &$process -ssh -l $Loginname -pw $pw $FQDN
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (The server's ho...e registry. You:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 c2:ea:62:af:70:14:e4:f0:a0:79:88:45:85:fc:cd:cc
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)
最佳答案
plink
失败不会引发 (PowerShell) 错误,因此不会增加 $error
数数。查看 $LastExitCode
如果要检测命令是成功还是失败。
至于有人“弄乱了 Excel 表”:在这种情况下,脚本究竟是如何失败的?处理此错误将很大程度上取决于实际错误。
主机 key 问题可以通过在命令中回显“y”来处理:
"y" | &$process -ssh -l $loginname[$counter] ...
$key = "HKCU:\Software\SimonTatham\PuTTY\SshHostKeys"
$val = "0x23,0x3857aee9..."
Set-ItemProperty $key "rsa2@22:$($FQDN[$counter])" $val
&$process -ssh -l $loginname[$counter] ...
plink
针对不存在的 FQDN 在我的测试中没有引发终止错误:
PS C:\> $process = "plink.exe"PS C:\> $fqdn = "correct.intern.example.org", "fail.intern.example.org"PS C:\> nslookup $fqdn[1]Server: ns.intern.example.orgAddress: 10.42.23.1DNS request timed out. timeout was 2 seconds.DNS request timed out. timeout was 2 seconds.*** ns.intern.example.org can't find fail.intern.example.org: Non-existent domainPS C:\> &$process -ssh -l username $fqdn[1] "echo foo"Unable to open connection:Host does not exist
not even when I set $ErrorActionPreference = "stop"
.
However, if you do get a terminating error, it should increment $error.Count
as well. Your check won't work, though, because you remember the previous error count plus one:
$errorzahl = $error.Count + [int]1
if ($error.Count -gt $errorzahl) {
...
$errorzahl = $error.Count
...
if ($error.Count -gt $errorzahl) {
...
关于powershell - 主机未知时如何捕获 plink 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17548621/
我希望在后台从 vb.net 应用程序调用 plink(不显示黑色 plink cmd 屏幕)是否可能? 最佳答案 当然。请参阅 dreamincode.net 上的说明. 基本上,您想要隐藏窗口,并
我有一个 Linux shell 脚本文件,它从 Linux 服务器收集各种数据。 (服务、流程、自由空间等)。 从 Windows 收集数据,我们使用 Plink 连接到 linux Boxes 并
我正在使用 Plink 在远程计算机上执行命令。 例如: plink.exe -l login -pw password net stop spooler 是否可以在执行此命令后,Plink 窗口会等
我正在尝试使用无密码 SSH 连接从 Windows 连接 Linux 机器。我在 Windows 机器上使用 PuTTYgen 生成了 key ,并将 key 适本地复制到 Linux 机器上。 在
我正在尝试让 emacs tramp 在 Windows XP 下运行以在 Amazon EC2 实例上运行 putty plink。执行此操作的文档很少。我可以找到部分文档,但没有一个文档可以解决实
我尝试通过 plink 执行 bash 脚本。脚本看起来像这样: echo "@ Starting process..." ./bin/process "process.cfg" & disown %
我正在尝试通过 plink.exe 运行多个命令行。批处理完成后。我想退出并执行新的命令行 我的脚本在execute.bat 文件中 ( echo cd /appl/ echo sudo -s ech
这应该是非常基本的。我正在从 Windows 运行 plink 并希望将一些输出保存到文件中plink 192.168.229.128 -ssh -l root -pw 密码 runsql.sh >
我编写了一个 bash 文件,因此如果用户选择特定选项,则在 Linux 服务器上将执行特定的 .sh 文件。 例如: 如果用户按 1: for %%? in (1) do if /I "%C%"==
plink user@10.220.60.xx -t '/home/user/test/testpgm' 我能够使用上面的 plink cmd 从 Windows 机器运行驻留在 Linux 机器上的
MY SERVER: BitVise SSH server for windows My Client: plink.exe 我这辈子都想不出如何在使用 plink.exe 时更改目录并在该目录中执行
如果超时并自动重新连接,我将如何创建一个简单的批处理脚本 (windows) 来关闭当前的 plink session ? 像这样: if "plink.exe" == "false" ( "
我想在 PowerShell 中加密密码并将其与 plink 和 putty 一起使用。 是的,我知道它只需要明文密码 ( Password encryption using SecureString
配置: Windows 7 腻子 0.67 plink 0.67 问题 我正在尝试使用 plink在 COM9 上打开串行端口连接。 使用 PuTTY 我可以在 COM9 上打开串行连接,并且我为该串
我的一个脚本有问题。基本上它运行得非常顺利,但它需要一些来自 excel 文件的用户输入。用户可能会导致错误,这就是我的问题。 我的脚本通过 ssh 与 plink 连接(lil PuTTY) 到某些
我正在使用 plink.exe 在远程服务器上执行命令。我能够与远程服务器连接,但是当我对服务器执行命令时,它将返回无效字符输出,例如: [?7l[H[2J[?25l[1;1H[37m[40m[2;1
这个问题在这里已经有了答案: Use Plink to execute command (Oracle SQL query) on remote server over SSH (1 个回答) 2年前
这个问题已经有答案了: Using module 'subprocess' with timeout (32 个回答) 已关闭5 年前。 进程完成后,Plink.exe 不会关闭。当试图通过检查 if
我目前正在尝试编写一个函数来运行 plink 并捕获该进程的输出。当我尝试 StandardOutput 时,我什么也没得到,而当我尝试 StandardError 时,我得到“无法从标准输入读取:句
这个问题在这里已经有了答案: How to redirect Windows cmd stdout and stderr to a single file? (7 个答案) 关闭 12 个月前。 我
我是一名优秀的程序员,十分优秀!