Preface
1. Introduction
Automation Is a Must
How Perl Can Help You
This Book Will Show You How
What You Need
Some Notes About the Perl Versions Used for This Book
What About Perl 5.10?
What About Strawberry Perl?
What About Perl 6?
Some Notes About Using Vista with the Code in This Book
Locating and Installing Modules
Installing Modules on Unix
Installing Modules on Win32
It’s Not Easy Being Omnipotent
Don’t Do It
Drop Your Privileges As Soon As Possible
Be Careful When Reading Data
Be Careful When Writing Data
Avoid Race Conditions
.Enjoy
References for More Information
2. Filesystems
Perl to the Rescue
Filesystem Differences
Unix
Windows-Based Operating Systems
Mac OS X
Filesystem Differences Summary
Dealing with Filesystem Differences from Perl
Walking or Traversing the Filesystem by Hand
Walking the Filesystem Using the File::Find Module
Walking the Filesystem Using the File::Find::Rule Module
Manipulating Disk Quotas
Editing Quotas with edquota Trickery
Editing Quotas Using the Quota Module
Editing NTFS Quotas Under Windows
Querying Filesystem Usage
Module Information for This Chapter
References for More Information
3. User Accounts
Unix User Identities
The Classic Unix Password File
Changes to the Password File in BSD 4.4 Systems
Shadow Passwords
Windows-Based Operating System User Identities
Windows User Identity Storage and Access
Windows User ID Numbers
Windows Passwords Don’t Play Nice with Unix Passwords
Windows Groups
Windows User Rights
Building an Account System to Manage Users
The Backend Database
The Low-Level Component Library
The Process Scripts
Account System Wrap-Up
Module Information for This Chapter
References for More Information
Unix Password Files
Windows User Administration
4. User Activity
Process Management
Windows-Based Operating System Process Control
Unix Process Control
File and Network Operations
Tracking File Operations on Windows
Tracking Network Operations on Windows
Tracking File and Network Operations in Unix
Module Information for This Chapter
Installing Win32::Setupsup
References for More Information
5. TCP/IP Name and Configuration Services
Host Files
Generating Host Files
Error-Checking the Host File Generation Process
Improving the Host File Output
Incorporating a Source Code Control System
NIS, NIS+, and WINS
NIS+
Windows Internet Name Server (WINS)
Domain Name Service (DNS)
Generating DNS (BIND) Configuration Files
DNS Checking: An Iterative Approach
DHCP
Active Probing for Rogue DHCP Servers
Monitoring Legitimate DHCP Servers
Module Information for This Chapter
References for More Information
6. Working with Configuration Files
Configuration File Formats
Binary
Naked Delimited Data
Key/Value Pairs
Markup Languages
All-in-One Modules
Advanced Configuration Storage Mechanisms
Module Information for This Chapter
References for More Information
XML and YAML
7. SQL Database Administration
Interacting with a SQL Server from Perl
Using the DBI Framework
Using ODBC from Within DBI
Server Documentation
MySQL Server via DBI
Oracle Server via DBI
Microsoft SQL Server via ODBC
Database Logins
Monitoring Space Usage on a Database Server
Module Information for This Chapter
References for More Information
DBI
Microsoft SQL Server
ODBC
Oracle
8. Email
Sending Mail
Getting sendmail (or a Similar Mail Transport Agent)
Using the OS-Specific IPC Framework to Drive a Mail Client
Speaking the Mail Protocols Directly
Common Mistakes in Sending Email
Overzealous Message Sending
Subject Line Waste
Insufficient Information in the Message Body
Fetching Mail
Talking POP3 to Fetch Mail
Talking IMAP4rev1 to Fetch Mail
Processing Mail
Dissecting a Single Message
Dissecting a Whole Mailbox
Dealing with Spam
Support Mail Augmentation
Module Information for This Chapter
References for More Information
9. Directory Services
What’s a Directory?
Finger: A Simple Directory Service
The WHOIS Directory Service
LDAP: A Sophisticated Directory Service
LDAP Programming with Perl
The Initial LDAP Connection
Performing LDAP Searches
Entry Representation in Perl
Adding Entries with LDIF
Adding Entries with Standard LDAP Operations
Deleting Entries
Modifying Entry Names
Modifying Entry Attributes
Deeper LDAP Topics
Putting It All Together
Active Directory Service Interfaces
ADSI Basics
Using ADSI from Perl
Dealing with Container/Collection Objects
Identifying a Container Object
So How Do You Know Anything About an Object?
Searching
Performing Common Tasks Using the WinNT and LDAP Namespaces
Working with Users via ADSI
Working with Groups via ADSI
Working with File Shares via ADSI
Working with Print Queues and Print Jobs via ADSI
Working with Windows-Based Operating System Services via ADSI
Module Information for This Chapter
References for More Information
LDAP
ADSI
10. Log Files
Reading Text Logs
Reading Binary Log Files
Using unpack()
Calling an OS (or Someone Else’s) Binary
Using the OS’s Logging API
Structure of Log File Data
Dealing with Log File Information
Space Management of Logging Information
Log Parsing and Analysis
Writing Your Own Log Files
Logging Shortcuts and Formatting Help
Basic/Intermediate Logging Frameworks
Advanced Logging Framework
Module Information for This Chapter
References for More Information
11. Security
Noticing Unexpected or Unauthorized Changes
Local Filesystem Changes
Changes in Data Served Over the Network
Noticing Suspicious Activities
Local Signs of Peril
Finding Problematic Patterns
Danger on the Wire, or “Perl Saves the Day”
Preventing Suspicious Activities
Suggest Better Passwords
Reject Bad Passwords
Module Information for This Chapter
References for More Information
12. SNMP
Using SNMP from Perl
Sending and Receiving SNMP Traps, Notifications, and Informs
Alternative SNMP Programming Interfaces
Module Information for This Chapter
References for More Information
13. Network Mapping and Monitoring
Network Mapping
Discovering Hosts
Discovering Network Services
Physical Location
Presenting the Information
Textual Presentation Tools
Graphical Presentation Tools
Monitoring Frameworks
Extending Existing Monitoring Packages
What’s Left?
Module Information for This Chapter
References for More Information
14. Experiential Learning
Playing with Timelines
Task One: Parsing crontab Files
Task Two: Displaying the Timeline
Task Three: Writing Out the Correct XML File
Putting It All Together
Summary: What Can We Learn from This?
Playing with Geocoding
Geocoding from Postal Addresses
Geocoding from IP Addresses
Summary: What Can We Learn from This?
Playing with an MP3 Collection
Summary: What Can We Learn from This?
One Final Exploration
Part One: Retrieving the Wiki Page with WWW::Mechanize
Part Two: Extracting the Data
Part Three: Geocoding and Mapping the Data
Summary: What Can We Learn from This?
Remember to Play
Module Information for This Chapter
Source Material for This Chapter
A. The Eight-Minute XML Tutorial
B. The 10-Minute XPath Tutorial
C. The 10-Minute LDAP Tutorial
D. The 15-Minute SQL Tutorial
E. The Five-Minute RCS Tutorial
F. The Two-Minute VBScript-to-Perl Tutorial
G. The 20-Minute SNMP Tutorial
Index