blob: 6338b5c01cdc05596e09943f2f4fd5e817504e89 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
Examples
========
Under the distribution tarball directory you should find an "examples" directory.
This is the best way to learn to use Pexpect. See the descriptions of Pexpect
Examples.
`topip.py <https://github.com/pexpect/pexpect/blob/master/examples/topip.py>`_
This runs `netstat` on a local or remote server. It calculates some simple
statistical information on the number of external inet connections. This can
be used to detect if one IP address is taking up an excessive number of
connections. It can also send an email alert if a given IP address exceeds a
threshold between runs of the script. This script can be used as a drop-in
Munin plugin or it can be used stand-alone from cron. I used this on a busy
web server that would sometimes get hit with denial of service attacks. This
made it easy to see if a script was opening many multiple connections. A
typical browser would open fewer than 10 connections at once. A script might
open over 100 simultaneous connections.
`hive.py <https://github.com/pexpect/pexpect/blob/master/examples/hive.py>`_
This script creates SSH connections to a list of hosts that you provide.
Then you are given a command line prompt. Each shell command that you
enter is sent to all the hosts. The response from each host is collected
and printed. For example, you could connect to a dozen different
machines and reboot them all at once.
`script.py <https://github.com/pexpect/pexpect/blob/master/examples/script.py>`_
This implements a command similar to the classic BSD "script" command.
This will start a subshell and log all input and output to a file.
This demonstrates the :meth:`~pexpect.spawn.interact` method of Pexpect.
`ftp.py <https://github.com/pexpect/pexpect/blob/master/examples/ftp.py>`_
This demonstrates an FTP "bookmark". This connects to an ftp site;
does a few ftp tasks; and then gives the user interactive control over
the session. In this case the "bookmark" is to a directory on the
OpenBSD ftp server. It puts you in the i386 packages directory. You
can easily modify this for other sites. This demonstrates the
:meth:`~pexpect.spawn.interact` method of Pexpect.
`monitor.py <https://github.com/pexpect/pexpect/blob/master/examples/monitor.py>`_
This runs a sequence of commands on a remote host using SSH. It runs a
simple system checks such as uptime and free to monitor the state of
the remote host.
`passmass.py <https://github.com/pexpect/pexpect/blob/master/examples/passmass.py>`_
This will login to each given server and change the password of the
given user. This demonstrates scripting logins and passwords.
`python.py <https://github.com/pexpect/pexpect/blob/master/examples/python.py>`_
This starts the python interpreter and prints the greeting message
backwards. It then gives the user iteractive control of Python. It's
pretty useless!
`ssh_tunnel.py <https://github.com/pexpect/pexpect/blob/master/examples/ssh_tunnel.py>`_
This starts an SSH tunnel to a remote machine. It monitors the
connection and restarts the tunnel if it goes down.
`uptime.py <https://github.com/pexpect/pexpect/blob/master/examples/uptime.py>`_
This will run the uptime command and parse the output into variables.
This demonstrates using a single regular expression to match the
output of a command and capturing different variable in match groups.
The grouping regular expression handles a wide variety of different
uptime formats.
|