从 Jenkins 输入到变量 powershell 的 IP 地址
IP Address Input from Jenkins to Variable powershell
我有 Jenkins 作业要求 IP 地址
$ip = $env:Lan_ip
用户输入的内容会转到 $ip
现在 $ip
例如 192.168.10.10
现在我正在尝试将此变量插入 FortiGate SSH
Invoke-SshCommand $Firewall -command ‘config system interface
edit port1
set ip $ip 255.255.255.0
end’
但是他看不懂 $ip
我需要像 INT 一样把它和 .
分开
我遇到了这个错误
node_check_object fail! for ip $ip
当用户输入 ip 地址时,我如何转换从用户那里得到的 sting im --> 192.168.10.10
到代码中的可用变量
根据我从 here 收集到的信息,您需要提供 子网掩码 作为 CIDR 格式的子网掩码,例如 255.255.255.0/24
要从子网 IP 地址获取 CIDR 值,您可以使用此函数:
function Get-SubnetMaskLength ([string]$SubnetMask) {
# $cidr = Get-SubnetMaskLength "255.255.240.0" --> 20
$result = 0
[IPAddress]$ip = $SubnetMask
foreach ($octet in $ip.GetAddressBytes()) {
while ($octet) {
$octet = ($octet -shl 1) -band [byte]::MaxValue
$result++
}
}
$result
}
所以
$subNet = '255.255.255.0'
$cidr = Get-SubnetMaskLength $subNet # --> 24
$subNetAndCidr = '{0}/{1}' -f $subNet, $cidr # --> 255.255.255.0/24
P.S。在代码中始终使用 直 引号而不是卷曲的 ‘
和 ’
!
我有 Jenkins 作业要求 IP 地址
$ip = $env:Lan_ip
用户输入的内容会转到 $ip
现在 $ip
例如 192.168.10.10
现在我正在尝试将此变量插入 FortiGate SSH
Invoke-SshCommand $Firewall -command ‘config system interface
edit port1
set ip $ip 255.255.255.0
end’
但是他看不懂 $ip
我需要像 INT 一样把它和 .
我遇到了这个错误
node_check_object fail! for ip $ip
当用户输入 ip 地址时,我如何转换从用户那里得到的 sting im --> 192.168.10.10 到代码中的可用变量
根据我从 here 收集到的信息,您需要提供 子网掩码 作为 CIDR 格式的子网掩码,例如 255.255.255.0/24
要从子网 IP 地址获取 CIDR 值,您可以使用此函数:
function Get-SubnetMaskLength ([string]$SubnetMask) {
# $cidr = Get-SubnetMaskLength "255.255.240.0" --> 20
$result = 0
[IPAddress]$ip = $SubnetMask
foreach ($octet in $ip.GetAddressBytes()) {
while ($octet) {
$octet = ($octet -shl 1) -band [byte]::MaxValue
$result++
}
}
$result
}
所以
$subNet = '255.255.255.0'
$cidr = Get-SubnetMaskLength $subNet # --> 24
$subNetAndCidr = '{0}/{1}' -f $subNet, $cidr # --> 255.255.255.0/24
P.S。在代码中始终使用 直 引号而不是卷曲的 ‘
和 ’
!