SlideShare a Scribd company logo
Python

for Linux system administration




       (yes, this is a commercial)




              Vern Ceder
            Fort Wayne LUG
            Fort Wayne, IN
Instead of?

the “official” languages for sysamins



    bash* (and awk and sed)
       *or your favorite similar shell


                   perl
       (if you don't believe me,
             ask O'Reilly)
http://www.oreillyschool.com/courses/asac4/
A scripting language should

      handle input & output

 process text – search, replace,
      pattern matching, etc.

       traverse filesystems

use system utilities and libraries
              (glue)
What's wrong with
   bash & perl?



 Nothing, really...
bash


is a great glue language

pipes things like a champ

has a ton of utilities
  (the whole system, in fact)
awk and sed


handle strings brilliantly
perl


combines it all...
but...

  bash is a pain when things
          get complex

         sed is tricky

    perl makes my head hurt

(I always have rather liked awk)
So what about Python?

      handles strings well

        is a good “glue”

   “batteries included” → I/O,
         filesystem, etc

large collection of external libs
Python also

   is very readable
(and easy to maintain)

    is expressive

   is easy to grasp

is either OO (or not)

        is fun
everyone's doing it

        Redhat

        Ubuntu

        Google

   etc, etc, etc...
but...
         (there's always a “but”)


regular expressions aren't built-in

   not (quite) as common as perl
and let's talk about




the elephant in the room
indentation

yes, Python uses indentation
       to organize code

 it makes code more readable

it's no weirder than {} or @$%



         get over it
strings
some built-in string methods
   split             lower
   strip             upper
    join            isdigit
  replace          swapcase
    find          expandtabs
   count             center
startswith      encode/decode
 endswith            format
for example

             to do what wc does:
#!/usr/bin/env python

import sys
data = sys.stdin.read()
chars = len(data)
words = len(data.split())
lines = len(data.split('n'))
print ("{0}   {1}   {2}".format(lines, words, chars))

doc@paladin:~/work/olf$ ./wc.py < wc.py
12   22   189
or number of occurrences?
             in bash (not mine):
doc@pal:~/olf$ tr " " "n" <    wc.py | grep len | wc -w
3
                   in Python:
#!/usr/bin/env python
import sys
data = sys.stdin.read()
print data.count(sys.argv[1])

doc@paladin:~/work/olf$ ./num_occur.py len < wc.py
3
regular expressions

                   re module

         syntax similar to perl
import re
>>> re.findall("[Ll]en", "len is the Length")
['len', 'Len']
exception handling
y = 10
try:
    x = y / 0
except ZeroDivisionError, e:
    print e
integer division or modulo by zero
glue

 multiple ways to call other
programs and pipe the results
  sys.stdin, sys.stdout, sys.stderr

      os.system(), os.spawnl()

         subprocess.call()

         subprocess.Popen()
Modules: subprocess
from subprocess import *
p = Popen(["ls", "-l"], stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
files, directories and more
        the os and sys modules
os.environ         sys.argv
os.getcwd          sys.stdin
os.chmod           sys.stdout
os.chown           sys.stderr
os.link            sys.platform
os.mkdir           sys.exit
os.remove
os.rename
Modules: os

                os.walk()
import os
>>> for x in os.walk('.'):
...     print x
...
('.', ['emptydir'], [ 'chinese-python-
poster.jpg', 'olf_proposal.txt', 'wc.py',
'olf.odp', 'shell.png', 'olf.txt',
'Pil.gif', 'adminscripting.png',
'num_occur.py'])
('./emptydir', [], [])
Modules: os.path

     exists
     getmtime
     isfile
     isdir
     islink
     ismount
     samefile
     split
command line arguments

           sys.argv
      list of all arguments

           optparse
  parsing all types of arguments

  returns options and parameters

         automatic help
Modules: others

databases – sqlite3 and others

             fork

          threading
ssh – paramiko
#!/usr/bin/env python
import paramiko

hostname = 'localhost'
port = 22
username = 'test'
password = 'password'

paramiko.util.log_to_file('paramiko.log')
    s = paramiko.SSHClient()
    s.load_system_host_keys()
    s.connect(hostname, port, username, password)
    stdin, stdout, stderr = s.exec_command('ifconfig')
    print stdout.read()
    s.close()
daemons

               python-daemon
import daemon
from spam import main_program
with daemon.DaemonContext():
main_program
ctypes
         load and use C libraries
          also works with Windows DLL's

>>> from ctypes import *
>>> libc = CDLL("libc.so.6")
>>> libc.printf("hello %sn", "Python")
hello Python
13
>>> print libc.time(None)
1253757776
>>> import datetime
>>> datetime.datetime.fromtimestamp(libc.time(None))
datetime.datetime(2009, 9, 23, 22, 5, 56)
A 2 line HTTP server
from  http.server import HTTPServer,
              SimpleHTTPRequestHandler
server = HTTPServer(("",8000),
           SimpleHTTPRequestHandler)
server.serve_forever()
What about Python 3?

it's a better language than 2.x

  it's not backward compatible

it's supported by the developers

         it's the future

it's not here (for sysadmins) yet
ipython, the uber shell

             extensive history

        usable as a system shell

        http://ipython.scipy.org
In [1]: print "hello"
------> print("hello")
hello

In [2]: ls
 adminscripting.png      olf.odp   Pil.gif
nd
Quick Python Book, 2            ed

           covering Python 3

        due out late this year
          http://www.manning.com/ceder
World's largest Python conference
             Talks

                         PyCon 2010
                                                             Open Space
         Tutorials
                                                             Hands-On Lab
        Lightning
          Talks           Feb. 17-25                          Exhibit Hall

        Keynotes
                          Atlanta, GA                           Sprints


                            NOW with
                         Poster sessions!




                         us.pycon.org
Photo: james.rintamaki
License: Attribution-
Share Alike 2.0
Generic
Resources
                  & contact info

    Python for Unix and Linux System Administration,
     Noah Gift, Jeremy M. Jones, O'Reilly Media 2008

          Pro Python System Administration,
      Rytis Sileika, Apress, (not yet published)

   “Python for system administrators”, James Knowlton,
                 IBM DeveloperWorks, 2007
http://www.ibm.com/developerworks/aix/library/au-python/

   Python Cookbook, Martelli, Ravenscroft & Ascher,
                  O'Reilly Media 2005
Contact info


http://tech.canterburyschool.org/tech/VernCeder

         http://www.manning.com/ceder

               vceder@gmail.com

More Related Content

PDF
Spectrum Scale final
PPT
Ibm power ha v7 technical deep dive workshop
PDF
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
PDF
네트워크 가상화 발표자료-SDN/NFV/Cloud
PDF
An Introduction to VMware NSX
PPTX
Kubernates vs Openshift: What is the difference and comparison between Opensh...
PDF
An Introduction to OpenStack Heat
PPTX
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up
Spectrum Scale final
Ibm power ha v7 technical deep dive workshop
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
네트워크 가상화 발표자료-SDN/NFV/Cloud
An Introduction to VMware NSX
Kubernates vs Openshift: What is the difference and comparison between Opensh...
An Introduction to OpenStack Heat
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up

What's hot (20)

PDF
Virtualization Architecture & KVM
PDF
VMware Horizon (view) 7 Lab Manual
PDF
IBM Power VC
PDF
Container Security Essentials
PDF
Virtualization with KVM (Kernel-based Virtual Machine)
PDF
Introduction to kubernetes
PDF
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
PPTX
VMware vSphere+ and vSAN+ Pricing and Packaging Partner Facing Deck EN (1).pptx
PDF
Ansible - Hands on Training
PDF
SecDevOps - The Operationalisation of Security
PDF
Introduction to Kubernetes Workshop
PPTX
Cgroups, namespaces and beyond: what are containers made from?
PDF
Virtualized network with openvswitch
PPTX
Confidential Computing overview
PDF
OpenStack Architecture
PPT
Avaya VoIP on Cisco Best Practices by PacketBase
PPTX
Virtual Infrastructure Overview
PPTX
Cisco Identity Services Engine (ISE)
PPTX
Disaster Recovery using Spectrum Scale Active File Management
PDF
Cloud Native Bern 05.2023 — Zero Trust Visibility
Virtualization Architecture & KVM
VMware Horizon (view) 7 Lab Manual
IBM Power VC
Container Security Essentials
Virtualization with KVM (Kernel-based Virtual Machine)
Introduction to kubernetes
VMware ESXi - Intel and Qlogic NIC throughput difference v0.6
VMware vSphere+ and vSAN+ Pricing and Packaging Partner Facing Deck EN (1).pptx
Ansible - Hands on Training
SecDevOps - The Operationalisation of Security
Introduction to Kubernetes Workshop
Cgroups, namespaces and beyond: what are containers made from?
Virtualized network with openvswitch
Confidential Computing overview
OpenStack Architecture
Avaya VoIP on Cisco Best Practices by PacketBase
Virtual Infrastructure Overview
Cisco Identity Services Engine (ISE)
Disaster Recovery using Spectrum Scale Active File Management
Cloud Native Bern 05.2023 — Zero Trust Visibility
Ad

Viewers also liked (20)

PDF
Python and sysadmin I
PDF
Python for-unix-and-linux-system-administration
ODP
Programming Under Linux In Python
PDF
Server Administration in Python with Fabric, Cuisine and Watchdog
PPT
PyOWM - my first open source project
PDF
Programación Segura en python. Owasp Venezuela
PDF
Introduction to the rapid prototyping with python and linux for embedded systems
PDF
Integrando mis librerías C++ con Python
PDF
Real world Django deployment using Chef
PDF
Linux system administration - part-2
ODP
Python en Android,Charla del FUDcon Latam 2012
PPTX
Automated Deployment with Fabric
PDF
Final Internship presentation
PDF
TDC2016SP - Trilha Linux Embarcado
PPTX
Final Internship Presentation
PDF
Architecting a Scalable Hadoop Platform: Top 10 considerations for success
PPT
Python Deployment with Fabric
PPTX
Internship final presentation GraphicPeople
PPTX
Where to Deploy Hadoop: Bare Metal or Cloud?
PDF
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
Python and sysadmin I
Python for-unix-and-linux-system-administration
Programming Under Linux In Python
Server Administration in Python with Fabric, Cuisine and Watchdog
PyOWM - my first open source project
Programación Segura en python. Owasp Venezuela
Introduction to the rapid prototyping with python and linux for embedded systems
Integrando mis librerías C++ con Python
Real world Django deployment using Chef
Linux system administration - part-2
Python en Android,Charla del FUDcon Latam 2012
Automated Deployment with Fabric
Final Internship presentation
TDC2016SP - Trilha Linux Embarcado
Final Internship Presentation
Architecting a Scalable Hadoop Platform: Top 10 considerations for success
Python Deployment with Fabric
Internship final presentation GraphicPeople
Where to Deploy Hadoop: Bare Metal or Cloud?
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
Ad

Similar to Python for Linux System Administration (20)

PPT
PPT
Python_intro.ppt
PPT
Python for Engineers and Architects Stud
PPTX
PenTest using Python By Purna Chander
PPT
iNTRODUCATION TO PYTHON IN PROGRAMMING LANGUAGE
PDF
Developing IT infrastructures with Puppet
PPT
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
PPT
uso del lenguaje de programación python en métodos numéricos..ppt
PPT
Learn Python in three hours - Python is an experiment
PPT
python1.pptpppppppppppppppppppppppppppppppp
PPT
python_presentation_for students_high_school
PPT
python programing 101 presentation ... Let's start
PPT
uso del lenguaje de programación python en métodos numéricos..ppt
PPT
into python.pptinto python.pptinto python.ppt
PPT
Python doc and Learn Python in three hours
PPT
This presentation about python programming language.
PPT
Introduction to Python deep knowledge in it
PPT
Brief History of Python by Learning Python in three hours
PPT
python Basics of Python And Its features
PPT
python introduction to user friendly.ppt
Python_intro.ppt
Python for Engineers and Architects Stud
PenTest using Python By Purna Chander
iNTRODUCATION TO PYTHON IN PROGRAMMING LANGUAGE
Developing IT infrastructures with Puppet
pythegggggeeeeeeeeeeeeeeeeeeeeeeeon1.ppt
uso del lenguaje de programación python en métodos numéricos..ppt
Learn Python in three hours - Python is an experiment
python1.pptpppppppppppppppppppppppppppppppp
python_presentation_for students_high_school
python programing 101 presentation ... Let's start
uso del lenguaje de programación python en métodos numéricos..ppt
into python.pptinto python.pptinto python.ppt
Python doc and Learn Python in three hours
This presentation about python programming language.
Introduction to Python deep knowledge in it
Brief History of Python by Learning Python in three hours
python Basics of Python And Its features
python introduction to user friendly.ppt

Python for Linux System Administration

  • 1. Python for Linux system administration (yes, this is a commercial) Vern Ceder Fort Wayne LUG Fort Wayne, IN
  • 2. Instead of? the “official” languages for sysamins bash* (and awk and sed) *or your favorite similar shell perl (if you don't believe me, ask O'Reilly)
  • 4. A scripting language should handle input & output process text – search, replace, pattern matching, etc. traverse filesystems use system utilities and libraries (glue)
  • 5. What's wrong with bash & perl? Nothing, really...
  • 6. bash is a great glue language pipes things like a champ has a ton of utilities (the whole system, in fact)
  • 7. awk and sed handle strings brilliantly
  • 9. but... bash is a pain when things get complex sed is tricky perl makes my head hurt (I always have rather liked awk)
  • 10. So what about Python? handles strings well is a good “glue” “batteries included” → I/O, filesystem, etc large collection of external libs
  • 11. Python also is very readable (and easy to maintain) is expressive is easy to grasp is either OO (or not) is fun
  • 12. everyone's doing it Redhat Ubuntu Google etc, etc, etc...
  • 13. but... (there's always a “but”) regular expressions aren't built-in not (quite) as common as perl
  • 14. and let's talk about the elephant in the room
  • 15. indentation yes, Python uses indentation to organize code it makes code more readable it's no weirder than {} or @$% get over it
  • 16. strings some built-in string methods split lower strip upper join isdigit replace swapcase find expandtabs count center startswith encode/decode endswith format
  • 17. for example to do what wc does: #!/usr/bin/env python import sys data = sys.stdin.read() chars = len(data) words = len(data.split()) lines = len(data.split('n')) print ("{0} {1} {2}".format(lines, words, chars)) doc@paladin:~/work/olf$ ./wc.py < wc.py 12 22 189
  • 18. or number of occurrences? in bash (not mine): doc@pal:~/olf$ tr " " "n" < wc.py | grep len | wc -w 3 in Python: #!/usr/bin/env python import sys data = sys.stdin.read() print data.count(sys.argv[1]) doc@paladin:~/work/olf$ ./num_occur.py len < wc.py 3
  • 19. regular expressions re module syntax similar to perl import re >>> re.findall("[Ll]en", "len is the Length") ['len', 'Len']
  • 20. exception handling y = 10 try: x = y / 0 except ZeroDivisionError, e: print e integer division or modulo by zero
  • 21. glue multiple ways to call other programs and pipe the results sys.stdin, sys.stdout, sys.stderr os.system(), os.spawnl() subprocess.call() subprocess.Popen()
  • 22. Modules: subprocess from subprocess import * p = Popen(["ls", "-l"], stdout=PIPE, stderr=PIPE) out, err = p.communicate()
  • 23. files, directories and more the os and sys modules os.environ sys.argv os.getcwd sys.stdin os.chmod sys.stdout os.chown sys.stderr os.link sys.platform os.mkdir sys.exit os.remove os.rename
  • 24. Modules: os os.walk() import os >>> for x in os.walk('.'): ... print x ... ('.', ['emptydir'], [ 'chinese-python- poster.jpg', 'olf_proposal.txt', 'wc.py', 'olf.odp', 'shell.png', 'olf.txt', 'Pil.gif', 'adminscripting.png', 'num_occur.py']) ('./emptydir', [], [])
  • 25. Modules: os.path exists getmtime isfile isdir islink ismount samefile split
  • 26. command line arguments sys.argv list of all arguments optparse parsing all types of arguments returns options and parameters automatic help
  • 27. Modules: others databases – sqlite3 and others fork threading
  • 28. ssh – paramiko #!/usr/bin/env python import paramiko hostname = 'localhost' port = 22 username = 'test' password = 'password' paramiko.util.log_to_file('paramiko.log') s = paramiko.SSHClient() s.load_system_host_keys() s.connect(hostname, port, username, password) stdin, stdout, stderr = s.exec_command('ifconfig') print stdout.read() s.close()
  • 29. daemons python-daemon import daemon from spam import main_program with daemon.DaemonContext(): main_program
  • 30. ctypes load and use C libraries also works with Windows DLL's >>> from ctypes import * >>> libc = CDLL("libc.so.6") >>> libc.printf("hello %sn", "Python") hello Python 13 >>> print libc.time(None) 1253757776 >>> import datetime >>> datetime.datetime.fromtimestamp(libc.time(None)) datetime.datetime(2009, 9, 23, 22, 5, 56)
  • 31. A 2 line HTTP server from http.server import HTTPServer, SimpleHTTPRequestHandler server = HTTPServer(("",8000), SimpleHTTPRequestHandler) server.serve_forever()
  • 32. What about Python 3? it's a better language than 2.x it's not backward compatible it's supported by the developers it's the future it's not here (for sysadmins) yet
  • 33. ipython, the uber shell extensive history usable as a system shell http://ipython.scipy.org In [1]: print "hello" ------> print("hello") hello In [2]: ls adminscripting.png olf.odp Pil.gif
  • 34. nd Quick Python Book, 2 ed covering Python 3 due out late this year http://www.manning.com/ceder
  • 35. World's largest Python conference Talks PyCon 2010 Open Space Tutorials Hands-On Lab Lightning Talks Feb. 17-25 Exhibit Hall Keynotes Atlanta, GA Sprints NOW with Poster sessions! us.pycon.org Photo: james.rintamaki License: Attribution- Share Alike 2.0 Generic
  • 36. Resources & contact info Python for Unix and Linux System Administration, Noah Gift, Jeremy M. Jones, O'Reilly Media 2008 Pro Python System Administration, Rytis Sileika, Apress, (not yet published) “Python for system administrators”, James Knowlton, IBM DeveloperWorks, 2007 http://www.ibm.com/developerworks/aix/library/au-python/ Python Cookbook, Martelli, Ravenscroft & Ascher, O'Reilly Media 2005