My team is responsible for backend architecture, authentication, etc. and engineering-level support for wireless and wired networking at a relatively large University (50k+ users). Two of our biggest problems are confirming network issues (i.e. confirming reports of "long load times" or "slow Internet"), and collecting accurate information about the client device (MAC address, driver info, configuration, etc.). We support officially Windows, Mac, Ubuntu Linux, iOS and Android. Mobile devices are quite important to us, as they're becoming very prevalent.
We already have access to a Web100 NDT server (similar to the one at http://ndt.anl.gov:7123/) that uses a Java applet to run bi-directional bandwidth tests, and reports upload and download bandwidth, latency, jitter, wh开发者_如何学Goether the client is behind NAT, etc. Supposedly there are also iOS and Android clients for the NDT servers, but that would a) require installing the app on their device permanently (and, for iOS, getting it in the App Store), and b) I doubt the iOS app is open source, so we'd need to implement it from scratch to add the information gathering and result submission.
I need to collect information on the client operating system, in a relatively easy fashion, that non-technical end-users can understand? Essentially, I'd like our help desk people to be able to tell users (well, ones with a working network connection) to go to a web page, type in their ticket number, click a button, and something will collect their MAC address, OS type and version, wireless card driver versions, etc. and then post it back to the server.
I considered a Java applet, but given the sandboxing in modern browsers, I can't seem to get MAC addresses (let alone anything more useful like shell access) no matter how the app is signed or how many warnings the user is given. I'm considering Java Web Start to get what we need from desktop OSes, or just telling the Linux and Mac people to download a Bash script and run it.
Any ideas on the mobile OSes? For them, essentially, I need to get wireless MAC address, device model, OS version/build, etc.
Anyone know of any projects that already do something like this (and are free and Free)?
For Android you might need an app specifically to provide the info... I'm not sure you'll get that level of detail without it. The app will need permissions to run as well. I'd love to be proven wrong, but I suspect this will be the case. You could link an app that the user installs from a support page and the app could send the information back automatically if that made it easier for users? Anyway, the following might help:
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
followed by method calls like wifiManager.getDhcpInfo()
and wifiManager.getWifiState()
and wifiManager.getConnectionInfo()
should provide the information you need.
You'll need <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
in the manifest of the app as well.
And this snippet from @willytate in another similar thread re the OS information: android.os.Build provides a lot of information. Try:
String s="Debug-infos:"; s += "\n OS Version: " + System.getProperty("os.version") + "(" + android.os.Build.VERSION.INCREMENTAL + ")"; s += "\n OS API Level: " + android.os.Build.VERSION.SDK; s += "\n Device: " + android.os.Build.DEVICE; s += "\n Model (and Product): " + android.os.Build.MODEL + " ("+ android.os.Build.PRODUCT + ")";
Hope that helps
Steve
精彩评论