| #!/usr/bin/env python |
| |
| """This runs Apache Status on the remote host and returns the number of requests per second. |
| |
| ./astat.py [-s server_hostname] [-u username] [-p password] |
| -s : hostname of the remote server to login to. |
| -u : username to user for login. |
| -p : Password to user for login. |
| |
| Example: |
| This will print information about the given host: |
| ./astat.py -s www.example.com -u mylogin -p mypassword |
| |
| """ |
| |
| import os |
| import sys |
| import time |
| import re |
| import getopt |
| import getpass |
| import traceback |
| import pexpect |
| import pxssh |
| |
| |
| def exit_with_usage(): |
| |
| print globals()['__doc__'] |
| os._exit(1) |
| |
| |
| def main(): |
| |
| ###################################################################### |
| # Parse the options, arguments, get ready, etc. |
| ###################################################################### |
| try: |
| optlist, args = getopt.getopt( |
| sys.argv[ |
| 1:], 'h?s:u:p:', [ |
| 'help', 'h', '?']) |
| except Exception as e: |
| print str(e) |
| exit_with_usage() |
| options = dict(optlist) |
| if len(args) > 1: |
| exit_with_usage() |
| |
| if [elem for elem in options if elem in [ |
| '-h', '--h', '-?', '--?', '--help']]: |
| print "Help:" |
| exit_with_usage() |
| |
| if '-s' in options: |
| hostname = options['-s'] |
| else: |
| hostname = raw_input('hostname: ') |
| if '-u' in options: |
| username = options['-u'] |
| else: |
| username = raw_input('username: ') |
| if '-p' in options: |
| password = options['-p'] |
| else: |
| password = getpass.getpass('password: ') |
| |
| # |
| # Login via SSH |
| # |
| p = pxssh.pxssh() |
| p.login(hostname, username, password) |
| p.sendline('apachectl status') |
| p.expect('([0-9]+\.[0-9]+)\s*requests/sec') |
| requests_per_second = p.match.groups()[0] |
| p.logout() |
| print requests_per_second |
| |
| if __name__ == "__main__": |
| try: |
| main() |
| except Exception as e: |
| print str(e) |
| traceback.print_exc() |
| os._exit(1) |