我有一个PowerShell脚本,可以对某些服务器执行检查,例如PING为Test-Connection
。
我希望通过执行" FTP Open"来检查其中一台具有FTP服务器的服务器。命令。我不需要登录或上传/下载任何文件,只需要知道FTP服务器是否响应。
我在互联网上的大多数研究都指向设置凭据和导入专有模块来连接,也许上传或下载文件,但我只需要一个简单的方法来打开连接,如果有的话,告诉我是真是假。响应服务器。
我运行此脚本的服务器应该安装最少的软件,但如果它需要任何东西,最好是微软和他们的网站。
答案 0 :(得分:4)
Test-NetConnection是本机Powershell,可用于测试FTP端口21上的简单连接:
Test-NetConnection -ComputerName ftp.contoso.com -Port 21
答案 1 :(得分:1)
没有像FTP命令那样“打开”。
但也许你的意思是只测试服务器侦听FTP端口21:
try
{
$client = New-Object System.Net.Sockets.TcpClient("ftp.example.com", 21)
$client.Close()
Write-Host "Connectivity OK."
}
catch
{
Write-Host "Connection failed: $($_.Exception.Message)"
}
如果要测试FTP服务器是的行为,而不实际登录,请使用错误凭据的FtpWebRequest
并检查是否收到相应的错误消息。
try
{
$ftprequest = [System.Net.FtpWebRequest]::Create("ftp://ftp.example.com")
$ftprequest.Credentials = New-Object System.Net.NetworkCredential("wrong", "wrong")
$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::PrintWorkingDirectory
$ftprequest.GetResponse()
Write-Host "Unexpected success, but OK."
}
catch
{
if (($_.Exception.InnerException -ne $Null) -and
($_.Exception.InnerException.Response -ne $Null) -and
($_.Exception.InnerException.Response.StatusCode -eq
[System.Net.FtpStatusCode]::NotLoggedIn))
{
Write-Host "Connectivity OK."
}
else
{
Write-Host "Unexpected error: $($_.Exception.Message)"
}
}