Command Line PC Inventory Tool for Unix/MAC OS X
Hello - I need a unique command line pc inventory tool developed for a variety of flavors in UNIX (See "Unix Flavors" below). The command line pc inventory tool needs to capture very detailed hardware and software data from the workstation or server, authenticate with our server, and then send the results of the audit over the internet to my server via an HTTPS post (Must also be able to post via HTTP). Please read the entire project requirements and payment information for this project. DO NOT BID if you cannot follow through with this project, thoroughly debug and test the application, or communicate effectively over email. This should be an easy project if you have the experience and proper testing environment. If you perform well with this project, it will likely lead to further work.
For a formatted Description please click here: [url removed, login to view]
The UNIX PC Inventory Tool must run from the command line, and have the option to run the application as a service on the OS (See "Installable Service"). When run, depending on the parameters used the program will first authenticate the user (see Authentication below) through our online system. If the authentication fails, the program will send the appropriate error message to a log file (See Error Logging below). Once the authentication is verified, the application must audit the machine to collect detailed hardware and software installed. The collected data must then be sent via https to our online server (See Data Format). If the appropriate parameter (-x or -c) is used (see Export Functionality below), the application will not authenticate or send the collected information over the internet, but will instead store the data in a CSV or XML.
The auditor (aka "PC Inventory Tool") authenticates via an HTTPS post to a specified URL. In order to authenticate a UserID is required, along with either a password or hash. By default, the UserID and Hash should consist of 35 pluses ("+") each, and they should be defined as global variables (this is so we can customize the binary automatically for different user accounts). When the auditor is run, if the UserID still only contains all the pluses, then it should require the ID and Password via the commandline. If they contain anything else, then it should run using those as the UserID and Hash. So in pseudocode:
globalUserID = "+++++++++++++++++++++++++++++++++++"
globalHash = "+++++++++++++++++++++++++++++++++++"
if UserID and Password/Hash supplied via commandline parameters
Get UserID and Password/Hash from commandline
Authenticate with them
exit with error and display usage
authenticate with globalUserID and globalHash
if authentication failed, exit with error message in logfile
All Errors should automatically create/append to an [url removed, login to view] file in the directory that the command auditor is running from. This should include any communication errors, or failed audit information.
Data will be sent via a simple HTTP or HTTPS POST. The POST variable names to be used are listed below:
'login' => 'TESTUSER'
'password' => 'TESTPASS'
'id' => 'TESTPC'
'Software_OperatingSystem_0_Caption' => 'Red Hat Linux release 9 Shrike)'
'Software_OperatingSystem_0_BuildNumber' => '[url removed, login to view]'
'Software_OperatingSystem_0_BuildType' => 'Uniprocessor Free'
'Software_OperatingSystem_0_ServicePack' => 'Service Pack 1'
'Software_OperatingSystem_0_SerialNumber' => '55174-640-4329327-21093'
'Software_OperatingSystem_0_RegisteredUser' => 'User Lastname'
'Software_OperatingSystem_0_Uptime' => '145 Days'
'Software_OperatingSystem_0_InstallDate' => '20031021102037.000000-420'
'Software_InstalledSoftware_0_' => 'Apache 2.0.7'
'Software_InstalledSoftware_1_' => 'PHP 4.0'
'Software_InstalledSoftware_2_' => 'MySql 3.23'
Please review the entire example data collection from a windows machine: [url removed, login to view]
We need a command line argument to export the data to xml or csv. If either "-x" or "-c" is specified as a command line parameter, the auditor will not authenticate the user or communicate with our online server at all, but instead create the type of file specified. The command line argument "-x" will cause the application to save the collected data into an XML file, and the argument "-c" will save the file as a CSV (comma separated value). The files will be saved in the directory that the command line auditor is executed from. So if they are running on /home/enduser/audit -x, it will save the xml file as /home/enduser/pcname.xml.
::COMMAND LINE ARGUMENTS::
-x (Export to XML)
-c (Export to CSV)
--daemon (Run as Service)
**Example Command Line Arguments Usages:
/home/enduser/audit -x -u testuser -p password
./audit -u testuser -h dd0ec3fa0376c96b0e54c164090c025b
/home/enduser/audit -x -c -u testuser -h dd0ec3fa0376c96b0e54c164090c025b
We need the application to have the option of running as a daemon using the '--daemon' parameter. When executed in this fashion, the application will use settings from a config file (/etc/audit/[url removed, login to view]) "See "Daemon Config File". The application will then constantly run as a background process for scheduled audits (See "DAEMON CONFIG FILE" below). The scheduled audit will be configured by the "Frequency" option in the config file. So for example, if the application has a "Frequency=30" in the config file, the auditor should automatically audit the machine every 30 days.
::DAEMON CONFIG FILE::
If the system admin runs the application and a config file does not exist, simply display a brief message "Config File not present". Note that Password and Hash are mutually exclusive - either one or the other must be used, but not both. The sys admin will be required to set up a config file on their own, and we'd like it to reside in /etc/audit/[url removed, login to view]
The config file should specify required information:
### Config Audit###
#UserID of the Account to be used
#Password of the account (not needed if hash is used)
#Hash for the account (not needed if password is used)
#URL to post data to
PostURL=[url removed, login to view]
#location of log file
Log=/etc/audit/[url removed, login to view]
#Audit Frequency (in days)
### End Config Audit###
o Mac OS X
o Sun OS/Solaris
MAC OS 9
MAC OS 8.x
* MUST compile on the above Unix flavors, including Mac OS X (derivative of FreeBSD 5) .
* Must be developed with C or C++.
* Must collect the following information:
o Installed Software and Version Info
o Network Settings
o Installed Service Packs/Hot Fixes
o OS Version
o Hostname/Workstation ID
o Registered User Name
o Login Profile Name
o Swap File Size/Status
o System Processor
o Hard Drive(s)
o Video Card
o Sound Card
o Video Monitor
o Network Adapter(s)
Programmer will be required to test the application thoroughly and verify that the application works on ALL platforms bug free. Programmer must also be willing to test the application with our live/beta system. We will not perform your testing for you. If you lack the resources to properly test your code, please do not bid on this project.
50% of payment will be escrowed up front at the start of project. After the project is 100% complete, 50% of the first escrow will be released. We will then escrow the remaining 50% of the funds, and release them after we obtain the source code.
::TERMS AND CONDITIONS::
1) Programmer must provide client with a fully functional program(s) in
an executable form as well as complete source code of all work.
2) Deliverables must be in ready-to-use condition.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all Copyright ramifications are explained AND AGREED TO by the buyer before the project begins).
4) We reserve the right to cancel the project if we do not hear from the programmer within a reasonable timeframe. (We are running a business, 3-4 business days of non-responsive emails is un-acceptable)
5) We reserve the right to not release any of the escrowed fees if the programmer does not deliver the application.
6) Applications requiring additional licensing fees or separate modules/add-ons that will need to be purchased will not be accepted, unless agreed upon before the project begins.
Payment shall be made through Scriptlance and an excellent comment will be provided upon successful completion of this project.
Thanks for taking the time to read this Project Description.