384
edits
Changes
→Weekly Usage Report by Remote Host
* the <b>os, sys</b> modules
* the <b>argparse</b> module
* The <b>datetime</b> module
* The <b>subprocess</b> module
== Instructions ==
<li> Run the script itself. Investigate argparse. <b>In the main block, print(args).</b> Experiment with the various options.
<li> Read the usage output in the docs, what option must you implement? Go ahead and implement it. <b>Commit the change.</b>
<li> Use the check script to check your work: <code>./checkA2.py -f -v TestHelp</code>. It should succeed.<li> Investigate the <code>parse_for_user()</code> function, with the <code>usage_data_file</code>. <b>In main, call `parse_for_user()` with `output` as the argument. Investigate what's returned.</b>
<li> <code>parse_for_user()</code> should take the list of lines from the file, and instead return a list of usernames. <b>In main, print the title header and the output. Commit the change.</b>
<li> <b>Once you have `output` --> `parse_for_user()` --> correct output being printed, use if conditions to print only when `-l user` is in the command line arguments.</b>
<li> Test using <bcode>Continue committing these changes as your proceed./checkA2.py -f -v TestList</bcode><li> Implement . You should see some tests succeeding, but some failing. Use the check script to start implementing the same things as parse_for_user but functions needed for <codeb>parse_for_hosts-l host</codeb>. Use the user function to guide you. <li> Compare <b>Continue committing these changes as your output with proceed.</b> Your script should now be passing the output belowTestList tests.<li> Write Now implement the `parse_for_daily()` function using the pseudocode given-d <date> option. This should be taking the will filter your user list of lines from your file, and output a dictionary with start dates in DD/MM/YYYY format as based on the key and usage in seconds as date provided by the valueuser.<li> Use <code> {'01./01/1980': 1200, '02/01/1980': 2400, '03/01/1980': 2200} checkA2.py -f -v TestDate</code>to check your work. <lib> Once your `parse_for_daily()` function works, call it with You have completed the argparse options, and display the contents.first milestone!</b><li> Write (or modify) a function The next stage will be to do implement the same for remote hostsdaily/weekly reports.Use <code>TestDaily<li/code> Implement the outputting of the duration in HH:MM:SS instead of seconds. It's recommended you write a function to take in seconds and return a string. Call this when the `-s` option is absent. Make sure this is working with remote hosts as well. You should now have x of y tests passing.<licode>TestWeekly</code> Finally, implement with the `--monthly` option. Create a new function and get it working. start with seconds, then duration and make sure it works with remote as wellcheck script.
<li> Perform last checks and document your code. Write **why** your code is doing what it does, rather than **what** it's doing. You should have 100% of tests succeeding.
</ol>
List tables should need no extra formatting.
For daily/montly tables with two columns, The first column should be 10 characters long and be left-aligned.
The second column should be 15 characters long and be right-aligned. <pre>Daily Usage Report for rchan < same number of characters============================ <Date Usage < right justified13/02/2018 0:26:00 <15/02/2018 0:33:00Total 0:59:20llllllllllrrrrrrrrrrrrrrr < left column is 10 chars, right column is 15^left just.</pre>
=== Sample Outputs ===
The following are the reports generated by the usage report script (ur.py) with the "usage_data_file" mentioned in the overview section. You can download the file [https://scs.senecac.on.ca/~raymond.chan/ops435/a2/usage_data_file here] to test your ur.py script.
==== User List ====
The following is the user list extracted from the usage_data_file created by the command:
<pre>
[eric@centos a2]$ ./a2assignment2.py -u rchan -t daily usage_data_file
</pre>
The following is a Daily Usage Report created for the Remote Host 10.40.105.103 by the command:
<pre>
[eric@centos7 a2]$ ./a2assignment2.py -r 10.40.105.130 -t daily usage_data_file
</pre>
<pre>
Weekly Usage Report for 10.4340.115105.162130
=====================================
Date Usage
Running the script with <B>no filename</b> as a file argument should call a subprocess.Popen object and run the command <code>last -Fiw</code>.
<pre>
[eric@mtrx-node06pd ~]$ ./a2assignment2.py -l user
</pre>
<pre>
[eric@mtrx-node06pd ~]$ ./a2assignment2.py -u adas20 -t daily
</pre>
=== First Milestone ===
=== Python script coding and debugging ===
! Task !! Maximum mark !! Actual mark
|-
| Algorithm Submission First Milestone || 10 ||
|-
| Check Script Results || 30 ||
| List Functions || 5 ||
|-
| Daily/Monthly Weekly Functions || 10 ||
|-
| Output Date Functions || 5 ||
|-
| Other Output/other Functions || 5 ||
|-
| Overall Design/Coherence || 10 ||