Skip to content

Instantly share code, notes, and snippets.

@k-oguma
Created April 27, 2017 10:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save k-oguma/9de8a0429d549938654953004118c89f to your computer and use it in GitHub Desktop.
Save k-oguma/9de8a0429d549938654953004118c89f to your computer and use it in GitHub Desktop.
[Groovy] Ping to LAN and external
// arpで拾ってきたIPと外部へ疎通確認を行います
// 調整なしのJenkins master で スクリプトコンソールから実行すると Timeout するかも
def arp = "arp -a".execute().text
ArrayList queue = ['\\? \\(','\\).*']
String ext_target = "example.com"
for ( i in queue) {
arp = arp.replaceAll(/${i}/, '')
}
for ( ip in arp.split("\n") ){
if ( ip.matches(/192\.168\..*/) ){
execPing ip
}
}
class Target {
String target
String ping_opt = "ping -c 1 -t 1 "
def toTarget() {
String ping_cmd = ping_opt + target
tryCatch {
println ping_cmd.execute().text
}
}
def tryCatch(Closure proc) {
try {
return [proc.call()]
} catch (Exception e) {
println "// =>That pong doesn't return. \n"
return []
}
}
}
void execPing(String lan_ip) {
// arp tableにあるipへの疎通確認
def t = Target.newInstance(target: lan_ip)
t.toTarget()
}
// 外部への疎通確認
def t = Target.newInstance(target: ext_target)
t.toTarget()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment