Creating Agile Unix Command Line Tools With Python(Using Subprocess, Optparse, Doctest and more)                   Noah Gi...
QUICK WARNING!!!PLEASE DO NOT SATURATE THE PYCONNETWORK WITH ICMP REQUESTSWAIT UNTIL YOU GET HOME AND DO IT ONYOUR NEIGHBO...
Python Standard Library:A command line tool’s dream come true Optparse: Option Handling Subprocess: Elegant, One Stop, Sys...
Ideas for Command Line Tools Pure Python:   No systems calls, but do “Unix stuff” Unix Mashups   Mix Python + System to so...
The Basics: Subprocess + Optparse    Subprocess and Optparse:      Just like chocolate and peanut butter.      Alone they ...
Subprocess: Tips for lazy people    If you don’t care about stdout, use subprocess.call    If you want to do something wit...
subprocess.call WrapEvaluate return code, send output to /dev/null
OptparseOptparse is easy, all the tricky stuff is solved for you
Creating a Python/Unix Mashup Tool        Multi-Threaded Ping Sweep  Wrap system ping command in subprocess  Create a queu...
Multi-Threaded Ping Sweep
Convert It To A Command Line Tool
Adding SNMP Discovery(another queue, some more threads)
Doctest Example
A Pure Python Tool  Scapy+Storm   +Optparse
Integrating Config Files With Your Tool
Using Setuptools To Distribute ToolMake an eggCreate an entry point  Entry points install your script into Operating  Syst...
ReferencesThis Presentation and Examples:  http://code.noahgift.com/pycon2008SNMP and Python:  http://www.ibm.com/develope...
Upcoming SlideShare
Loading in …5
×

Pycon 2008: Python Command-line Tools *Nix

2,776
-1

Published on

Writing Unix Command-line tools in Python

Pycon 2008: Python Command-line Tools *Nix

  1. 1. Creating Agile Unix Command Line Tools With Python(Using Subprocess, Optparse, Doctest and more) Noah Gift PyCon 2008
  2. 2. QUICK WARNING!!!PLEASE DO NOT SATURATE THE PYCONNETWORK WITH ICMP REQUESTSWAIT UNTIL YOU GET HOME AND DO IT ONYOUR NEIGHBOR’S OPEN WIRELESS ACCESSPOINT
  3. 3. Python Standard Library:A command line tool’s dream come true Optparse: Option Handling Subprocess: Elegant, One Stop, System Call API ConfigParser: Read/Write config files Threading/Queue: Concurrency Generators: http://www.dabeaz.com/generators/Generators.pdf Doctest: Example Driven Testing Python Egg’s w/Entry Point: Simple way to install scripts
  4. 4. Ideas for Command Line Tools Pure Python: No systems calls, but do “Unix stuff” Unix Mashups Mix Python + System to solve new problems. Network Tools Wrapping Use existing tools, change the API, or behavior
  5. 5. The Basics: Subprocess + Optparse Subprocess and Optparse: Just like chocolate and peanut butter. Alone they are good, but together they make a tasty treat.
  6. 6. Subprocess: Tips for lazy people If you don’t care about stdout, use subprocess.call If you want to do something with stdout, use subprocess.Popen
  7. 7. subprocess.call WrapEvaluate return code, send output to /dev/null
  8. 8. OptparseOptparse is easy, all the tricky stuff is solved for you
  9. 9. Creating a Python/Unix Mashup Tool Multi-Threaded Ping Sweep Wrap system ping command in subprocess Create a queue Spawn some threads It is that easy
  10. 10. Multi-Threaded Ping Sweep
  11. 11. Convert It To A Command Line Tool
  12. 12. Adding SNMP Discovery(another queue, some more threads)
  13. 13. Doctest Example
  14. 14. A Pure Python Tool Scapy+Storm +Optparse
  15. 15. Integrating Config Files With Your Tool
  16. 16. Using Setuptools To Distribute ToolMake an eggCreate an entry point Entry points install your script into Operating System script directory, “for free”Create a --upgrade flag and integrate upgrades intoyour tool by using the Python Package Index
  17. 17. ReferencesThis Presentation and Examples: http://code.noahgift.com/pycon2008SNMP and Python: http://www.ibm.com/developerworks/aix/library/ au-netsnmpnipython/Scapy: http://www.secdev.org/projects/scapy/Storm: https://storm.canonical.com/Entry Points: http://peak.telecommunity.com/DevCenter/setuptools#automatic-script-creation
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×