From 9731cf88e1f2c8e8f972aa5a131568a717795802 Mon Sep 17 00:00:00 2001 From: Justin Parsell Date: Tue, 1 Mar 2022 16:05:11 -0500 Subject: [PATCH] init commit --- .vscode/launch.json | 15 ++++ .vscode/settings.json | 10 +++ JavaPingReport.jar | Bin 0 -> 3220 bytes README.md | 18 ++++ bin/App.class | Bin 0 -> 5489 bytes pingRequests.csv | 204 ++++++++++++++++++++++++++++++++++++++++++ pingResults.csv | 0 src/App.java | 116 ++++++++++++++++++++++++ 8 files changed, 363 insertions(+) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 JavaPingReport.jar create mode 100644 README.md create mode 100644 bin/App.class create mode 100644 pingRequests.csv create mode 100644 pingResults.csv create mode 100644 src/App.java diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d604e0f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "java", + "name": "Launch App", + "request": "launch", + "mainClass": "App", + "projectName": "JavaPingReport_ce27afdc", + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..900c92a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "java.project.sourcePaths": [ + "src" + ], + "java.project.outputPath": "bin", + "java.project.referencedLibraries": [ + "lib/**/*.jar" + ], + "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m" +} diff --git a/JavaPingReport.jar b/JavaPingReport.jar new file mode 100644 index 0000000000000000000000000000000000000000..61f8b1ee53f344a4d5466eddc4606e41557f9b92 GIT binary patch literal 3220 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 If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there. + +## Dependency Management + +The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies). diff --git a/bin/App.class b/bin/App.class new file mode 100644 index 0000000000000000000000000000000000000000..9cbfcff1a8bf2ace61a43637048f2e121ce96c84 GIT binary patch literal 5489 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 literal 0 HcmV?d00001 diff --git a/pingRequests.csv b/pingRequests.csv new file mode 100644 index 0000000..17fa290 --- /dev/null +++ b/pingRequests.csv @@ -0,0 +1,204 @@ +AcademyUL,10.127.0.70 +AcademyUL2nd,10.127.0.74 +Union City BOE,10.127.0.14 +WestNYMHSAnnexA,10.127.0.18 +WestNYBOE,10.127.0.22 +WestNYECS,10.127.0.26 +WestNYMHSAnnexB,10.127.0.30 +WestNYPS1,10.127.0.34 +WestNYPS2,10.127.0.38 +WestNYPS3,10.127.0.42 +WestNYPS3Annex,10.127.0.46 +WestNYPS4,10.127.0.50 +WestNYPS4Annex,10.127.0.54 +WestNYPS5,10.127.0.58 +WestNYPS6,10.127.0.62 +WestNYMiddle,10.127.0.66 +Lenape Valley,10.127.0.82 +WayneRyerson,10.127.0.90 +Hackensack ,10.127.0.86 +AndoverLongPond,10.127.0.94 +AndoverFlorence,10.127.0.98 +MineHill,10.127.0.114 +Keyport,10.127.0.118 +PennsvilleBOE,10.127.0.122 +PennsvilleHS,10.127.0.126 +PennsvilleMS,10.127.0.130 +PennsvilleVP,10.127.0.134 +PennsvilleCP,10.127.0.138 +PennsvillePB,10.127.0.142 +FairLawnHBM,10.127.1.134 +FairLawnJAF,10.127.1.138 +FairLawnLYN,10.127.1.142 +FairLawnMMS,10.127.1.146 +FairLawnRAD,10.127.1.150 +FairLawnTE,10.127.1.154 +FairLawnTJ,10.127.1.158 +FairLawnWP,10.127.1.162 +FairLawnWES,10.127.1.166 +FairLawnHS,10.127.1.170 +LeoniaHS,10.127.1.226 +LeoniaMS,10.127.1.230 +LeoniaACS,10.127.1.234 +Hunter 911InformNOC,10.127.0.102 +Hawthorne Schools,10.127.0.6 +Jody Demo,10.127.0.106 +Scott Demo,10.127.0.110 +EastBrunswickBOE,10.127.0.146 +Support Operation Building,10.127.0.150 +Irwin Elementary,10.127.0.154 +Bowne-Munro,10.127.0.158 +Frost Elementary,10.127.0.162 +Chittick Elementary ,10.127.0.166 +Churchill Junior High School,10.127.0.170 +High School,10.127.0.174 +Central Elementary ,10.127.0.178 +Hammarskjold Middle School,10.127.0.182 +Lawrence Brook Elementary,10.127.0.186 +Memorial Elementary,10.127.0.190 +Warnsdorfer Elementary,10.127.0.194 +Georgia Demo,10.127.0.198 +Trade Show Booth 1,10.127.0.202 +Trade Show Booth 2,10.127.0.206 +Trade Show Booth 3,10.127.0.210 +Trade Show Booth 4,10.127.0.214 +Avaya EBC,10.127.0.222 +CiscoDemo,10.127.0.226 +chrispierce,10.127.0.230 +SouthRiverEM,10.127.0.234 +SouthRiverHS,10.127.0.238 +SouthRiverBOE,10.127.0.242 +SouthRiverPS,10.127.0.246 +Byram,10.127.0.250 +Wayne Hills HS,10.127.0.254 +Wayne Valley HS,10.127.1.2 +PatersonDemo,10.127.1.6 +MilltownJK,10.127.1.10 +MilltownPV,10.127.1.14 +Lakewood,10.127.1.22 +Collier Youth,10.127.1.18 +LakewoodMuni,10.127.1.42 +MargateRoss,10.127.1.50 +MargateTighe,10.127.1.54 +HighlandParkHS,10.127.1.58 +HighlandParkPS,10.127.1.62 +HighlandParkES,10.127.1.66 +AllegiantDemo1,10.127.1.70 +AllegiantDemo2,10.127.1.74 +RumsonFairHaven,10.127.1.46 +MorrisHills,10.127.1.82 +OmniData,10.127.1.86 +RutherfordWS,10.127.1.90 +RutherfordLS,10.127.1.94 +RutherfordUS,10.127.1.98 +RutherfordPS,10.127.1.102 +RutherfordKC,10.127.1.106 +RutherfordHS,10.127.1.110 +RumsonSchoolDistrict,10.127.1.122 +MorrisKnoll,10.127.1.78 +ValleyHealth,10.127.1.126 +LaceyHS,10.127.1.174 +LaceyMS,10.127.1.178 +LaceyMPES,10.127.1.182 +LaceyCCES,10.127.1.186 +LaceyFRES,10.127.1.190 +LaceyLHES,10.127.1.194 +MorrisCountyVoc,10.127.1.218 +MorrisCountyESC,10.127.1.222 +chetuTest,10.127.1.238 +Hamilton,10.127.1.118 +EssexDP,10.127.1.246 +EssexNT,10.127.1.250 +EssexWCT,10.127.1.254 +NOLA,10.127.2.2 +StJohnofGod,10.127.2.6 +UCBOEG2,10.127.2.10 +MikeTarpley,10.127.2.14 +CBCHS,10.127.2.18 +GreaterBrunswick,10.127.2.22 +WayneTheunisDay,10.127.2.26 +WayneAnthonyWayne,10.127.2.42 +WaynePackanack,10.127.2.46 +WaynePinesLake,10.127.2.50 +WaynePreakness,10.127.2.54 +WayneJamesFallon,10.127.2.58 +PrincetonJohnsonPark,10.127.2.62 +PrincetonLittleBrook,10.127.2.66 +PrincetonRiverside,10.127.2.70 +PrincetonJohnWitherspoon,10.127.2.74 +PrincetonHS,10.127.2.78 +PrincetonCommunityPark,10.127.2.82 +ChathamHS,10.127.2.86 +ChathamMS,10.127.2.90 +ChathamLS,10.127.2.94 +ChathamMAS,10.127.2.98 +ChathamSBS,10.127.2.102 +ChathamWAS,10.127.2.106 +HolmdelIndianHill,10.127.2.110 +HolmdelVillage,10.127.2.114 +HolmdelHS,10.127.2.118 +GCCC,10.127.2.122 +BridgetonHS,10.127.2.126 +BridgetonMS,10.127.2.130 +BridgetonBRS,10.127.2.134 +BridgetonCSS,10.127.2.138 +BridgetonIAS,10.127.2.142 +BridgetonQMLS,10.127.2.146 +BridgetonWAS,10.127.2.150 +BridgetonEP,10.127.2.154 +BerkeleyBayvilleLTE,10.127.2.158 +BerkeleyCBWSLTE,10.127.2.162 +BerkeleyHMPSLTE,10.127.2.166 +BerkeleyTransportationLTE,10.127.2.170 +OrlandoJewish,10.127.2.174 +ValleyHealthHospital,10.127.2.182 +DenvilleVV,10.127.2.186 +DenvilleLV,10.127.2.190 +DenvilleRVM,10.127.2.194 +DenvilleRVA,10.127.2.198 +ValleyHealth960,10.127.2.202 +ValleyHealthDEB,10.127.2.206 +ValleyHealthDBK,10.127.2.210 +ValleyHealthILS,10.127.2.214 +ValleyHealthVMGC,10.127.2.218 +ValleyHealthVMGW,10.127.2.222 +ValleyHealthVC,10.127.2.226 +PointPleasantOE,10.127.2.230 +PointPleasantNBE,10.127.2.234 +PointPleasantMS,10.127.2.238 +PointPleasantHS,10.127.2.242 +PointPleasantBOE,10.127.2.246 +WayneTerhune,10.127.2.250 +WayneCarter,10.127.2.254 +WayneWashington,10.127.3.2 +WayneBOE,10.127.3.6 +ValleyHealthLuckow,10.127.3.10 +MITSVCS,10.127.3.18 +ClintonPS,10.127.3.26 +ClintonLGJ,10.127.3.30 +ClintonMHS,10.127.3.34 +BayheadES,10.127.3.58 +wrappertest,10.127.0.218 +RFHPod,10.127.1.130 +HackensackHMSCam,10.127.1.26 +HackensackHHSCam,10.127.1.30 +HackensackE1Cam,10.127.1.34 +HackensackE2Cam,10.127.1.38 +PennsvilleHSCam,10.127.1.198 +PennsvilleMSCam,10.127.1.202 +PennsvilleVPCam,10.127.1.206 +PennsvilleCPCam,10.127.1.210 +PennsvillePBCam,10.127.1.214 +EducationAcademy,10.127.1.242 +FairwaysGate1,10.127.2.30 +FairwaysGate2,10.127.2.34 +FairwaysMain,10.127.2.38 +CityofCarson,10.127.2.178 +SpringLakeMuni,10.127.3.14 +HCSPlannedCompanies,10.127.3.22 +FGCU,10.127.1.114 +HCSHumanServices,10.127.3.38 +HCSSummitFreePublicLibrary,10.127.3.42 +PanasonicShip,10.127.3.46 +HCSBOHP,10.127.3.50 +HCSUCBOE,10.127.3.54 diff --git a/pingResults.csv b/pingResults.csv new file mode 100644 index 0000000..e69de29 diff --git a/src/App.java b/src/App.java new file mode 100644 index 0000000..315a4bc --- /dev/null +++ b/src/App.java @@ -0,0 +1,116 @@ +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.Inet4Address; +import java.util.Scanner; +import java.util.Vector; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class App { + public static int pingAmount = 5; + public static int threadCount = 4; + + public static boolean killLoggingThread = false; + + public static ExecutorService workerThread = Executors.newFixedThreadPool(threadCount); + public static BlockingQueue printQueue = new ArrayBlockingQueue(1024); + public static BlockingQueue fileQueue = new ArrayBlockingQueue(1024); + + public static void main(String[] args) throws Exception { + //Var dec + Vector requestedPings = new Vector(); + File pingRequests = new File("pingRequests.csv"); + File pingResults = new File("pingResults.csv"); + FileWriter pingResultsWriter = new FileWriter(pingResults); + Scanner FScanner = new Scanner(pingRequests); + + System.out.println("Reading file..."); + // Populate vector + do{ + requestedPings.add(FScanner.nextLine().split(",")); + } while (FScanner.hasNextLine()); + FScanner.close(); + + System.out.println("Setting up output file..."); + // See if the file exists + if(!pingResults.exists()) + pingResults.createNewFile(); + + // Make sure I can read/write to file + if(!pingResults.canRead() && !pingResults.canWrite()) { + System.out.println("Can't read/write to file. Aborting"); + System.exit(1); + } + + // Clear file and set title line + pingResultsWriter.write("device,ip,status\n"); + + System.out.println("Pinging...\n---"); + // Ping and append to file + requestedPings.forEach((x) -> { + // Build runnable + Runnable rPing = () -> { + try { + float passCount = 0; + for(int i = 0; i < pingAmount; i++) + if(Inet4Address.getByName(x[1]).isReachable(5000)) + passCount++; + if(passCount/pingAmount > 0.5) { + printQueue.add(x[0] + " is up"); + fileQueue.add(x[0] + "," + x[1] + ",up\n"); + } else { + printQueue.add(x[0] + " is \u001B[31mdown\u001B[0m"); + fileQueue.add(x[0] + "," + x[1] + ",down\n"); + } + } catch (IOException e){ + e.printStackTrace(); + } + }; + // Add to the execute stack and execute it + workerThread.execute(rPing); + }); + + Runnable rLog = () -> { + try { + while(!killLoggingThread){ + if(!printQueue.isEmpty()) + System.out.println(printQueue.take()); + if(!fileQueue.isEmpty()) + pingResultsWriter.append(fileQueue.take()); + } + } catch(IOException ioe){ + ioe.printStackTrace(); + } catch(InterruptedException ie){ + ie.printStackTrace(); + } + }; + + // Create logging thread + Thread logThread = new Thread(rLog); + logThread.start(); + + // Tell the worker queue we're ready to shutdown + workerThread.shutdown(); + try { + // Wait one hour for the threads to finish + if (!workerThread.awaitTermination(1, TimeUnit.HOURS)) { + workerThread.shutdownNow(); + } + } catch (InterruptedException e) { + workerThread.shutdownNow(); + } + + // Interrupt the log thread + killLoggingThread = true; + logThread.join(); + + // Write and save file + System.out.println("---\nWriting to file..."); + pingResultsWriter.close(); + System.out.print("Complete! Exiting\n"); + } +}