VMware Cloud Community
akirty
Contributor
Contributor
Jump to solution

ESXi Telnet Connectivity

Hi,

I have to configure all hosts in a vCenter with a new NTP server however there are multiple hosts that are not able to reach the NTP server over port 123.

I am looking for script which can check each hosts' reachability to the NTP server over port 123 and give the output in a CSV so that we can get the ports opened accordingly.

Please help !!!

Tags (2)
0 Kudos
1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

You can use the netcat command on each ESXi node, but you should be able to start/stop SSH on each ESXi node.

This snippet uses the VICredentialStore to retrieve the credentials for each ESXi node, but you can replace that with any other method you use to store credentials.
The snippet requires the Posh-SSH module to be installed.
The snippet also allows testing against multiple NTP servers, each NTP server will have a column in the output.


$ntpServers = '192.168.1.11','192.168.1.12'

$cmdSub = @'
nc -w 1 -z $ntpServer 123
'@

Get-VMHost -Name esx1* -PipelineVariable esx |
ForEach-Object -Process {
    $ssh = Get-VMHostService -VMHost $esx | where{$_.Key -eq 'TSM-SSH'}
    if(-not $ssh.Running){
        Start-VMHostService -HostService $ssh -Confirm:$false | Out-Null
    }

    $viCred = Get-VICredentialStoreItem -Host $esx.Name
    $cred = New-Object -TypeName PSCredential -ArgumentList $viCRed.User,(ConvertTo-SecureString -String $viCred.Password -AsPlainText -Force)

    $session = New-SSHSession -ComputerName $esx.Name -Credential $cred

    $obj = [ordered]@{
        VMHost = $esx.Name
    }
    foreach($ntpServer in $ntpServers){
        $result = Invoke-SSHCommand -SSHSession $session -Command $ExecutionContext.InvokeCommand.ExpandString($cmdSub)
        $obj.Add($ntpServer,($result.Output[0] -match 'Succeeded'))
    }
    Remove-SSHSession -SSHSession $session | Out-Null

    New-Object -TypeName PSObject -Property $obj

    if (-not $ssh.Running) {
        Stop-VMHostService -HostService $ssh -Confirm:$false | Out-Null
    }
} | Export-Csv -Path .\report.csv -NoTypeInformation -UseCulture




Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

2 Replies
LucD
Leadership
Leadership
Jump to solution

You can use the netcat command on each ESXi node, but you should be able to start/stop SSH on each ESXi node.

This snippet uses the VICredentialStore to retrieve the credentials for each ESXi node, but you can replace that with any other method you use to store credentials.
The snippet requires the Posh-SSH module to be installed.
The snippet also allows testing against multiple NTP servers, each NTP server will have a column in the output.


$ntpServers = '192.168.1.11','192.168.1.12'

$cmdSub = @'
nc -w 1 -z $ntpServer 123
'@

Get-VMHost -Name esx1* -PipelineVariable esx |
ForEach-Object -Process {
    $ssh = Get-VMHostService -VMHost $esx | where{$_.Key -eq 'TSM-SSH'}
    if(-not $ssh.Running){
        Start-VMHostService -HostService $ssh -Confirm:$false | Out-Null
    }

    $viCred = Get-VICredentialStoreItem -Host $esx.Name
    $cred = New-Object -TypeName PSCredential -ArgumentList $viCRed.User,(ConvertTo-SecureString -String $viCred.Password -AsPlainText -Force)

    $session = New-SSHSession -ComputerName $esx.Name -Credential $cred

    $obj = [ordered]@{
        VMHost = $esx.Name
    }
    foreach($ntpServer in $ntpServers){
        $result = Invoke-SSHCommand -SSHSession $session -Command $ExecutionContext.InvokeCommand.ExpandString($cmdSub)
        $obj.Add($ntpServer,($result.Output[0] -match 'Succeeded'))
    }
    Remove-SSHSession -SSHSession $session | Out-Null

    New-Object -TypeName PSObject -Property $obj

    if (-not $ssh.Running) {
        Stop-VMHostService -HostService $ssh -Confirm:$false | Out-Null
    }
} | Export-Csv -Path .\report.csv -NoTypeInformation -UseCulture




Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

akirty
Contributor
Contributor
Jump to solution

Thank you so much. I  will give it a try

Tags (1)
0 Kudos