Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-paramiko-expect for
openSUSE:Factory checked in at 2022-10-14 15:41:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-paramiko-expect (Old)
and /work/SRC/openSUSE:Factory/.python-paramiko-expect.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-paramiko-expect"
Fri Oct 14 15:41:23 2022 rev:5 rq:1010373 version:0.3.4
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-paramiko-expect/python-paramiko-expect.changes
2022-08-11 18:32:37.622261429 +0200
+++
/work/SRC/openSUSE:Factory/.python-paramiko-expect.new.2275/python-paramiko-expect.changes
2022-10-14 15:42:06.119874586 +0200
@@ -1,0 +2,6 @@
+Wed Oct 12 13:51:17 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- Update to version 0.3.4
+ * No upstream changelog
+
+-------------------------------------------------------------------
Old:
----
paramiko-expect-0.3.2.tar.gz
New:
----
paramiko-expect-0.3.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-paramiko-expect.spec ++++++
--- /var/tmp/diff_new_pack.QE2xBT/_old 2022-10-14 15:42:06.567875334 +0200
+++ /var/tmp/diff_new_pack.QE2xBT/_new 2022-10-14 15:42:06.571875341 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%bcond_without python2
Name: python-paramiko-expect
-Version: 0.3.2
+Version: 0.3.4
Release: 0
Summary: An expect-like extension for the Paramiko SSH library
License: MIT
++++++ paramiko-expect-0.3.2.tar.gz -> paramiko-expect-0.3.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/paramiko-expect-0.3.2/LICENSE
new/paramiko-expect-0.3.4/LICENSE
--- old/paramiko-expect-0.3.2/LICENSE 1970-01-01 01:00:00.000000000 +0100
+++ new/paramiko-expect-0.3.4/LICENSE 2022-09-19 20:21:34.000000000 +0200
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Fotis Gimian
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/paramiko-expect-0.3.2/PKG-INFO
new/paramiko-expect-0.3.4/PKG-INFO
--- old/paramiko-expect-0.3.2/PKG-INFO 2022-01-13 13:07:35.973393200 +0100
+++ new/paramiko-expect-0.3.4/PKG-INFO 2022-09-19 20:26:16.785066100 +0200
@@ -1,213 +1,216 @@
Metadata-Version: 2.1
Name: paramiko-expect
-Version: 0.3.2
+Version: 0.3.4
Summary: An expect-like extension for the Paramiko SSH library
Home-page: https://github.com/fgimian/paramiko-expect
Author: Fotis Gimian
Author-email: [email protected]
License: MIT
-Description: Paramiko Expect
- ===============
-
- .. image:: https://img.shields.io/pypi/l/paramiko-expect.svg
- :target:
https://github.com/fgimian/paramiko-expect/blob/master/LICENSE
-
- .. image::
https://codecov.io/gh/fgimian/paramiko-expect/branch/master/graph/badge.svg
- :target: https://codecov.io/gh/fgimian/paramiko-expect
-
- .. image:: https://img.shields.io/travis/fgimian/paramiko-expect.svg
- :target: https://travis-ci.org/fruch/paramiko-expect/
-
- .. image:: https://img.shields.io/pypi/v/paramiko-expect.svg
- :target: https://pypi.python.org/pypi/paramiko-expect/
-
- .. image:: https://img.shields.io/pypi/pyversions/paramiko-expect.svg
- :target: https://pypi.python.org/pypi/paramiko-expect/
-
-
- .. image::
https://raw.githubusercontent.com/fgimian/paramiko-expect/master/images/paramiko-expect-logo.png
- :alt: Paramiko Expect Logo
-
- Artwork courtesy of `Open Clip Art
- Library <https://openclipart.org/detail/174780/openmouthed-robot>`_
-
- Introduction
- ------------
-
- Paramiko Expect provides an expect-like extension for the Paramiko SSH
library
- which allows scripts to fully interact with hosts via a true SSH
- connection.
-
- The class is constructed with an SSH Client object (this will likely be
- extended to support a transport in future for more flexibility).
-
- Quick Start
- -----------
-
- To install paramiko-expect, simply run the following at your prompt:
-
- .. code:: bash
-
- # from pypi
- pip install paramiko-expect
-
- # from source
- pip install git+https://github.com/fgimian/paramiko-expect.git
-
- So let's check out how it works in general (please see
- `paramiko_expect-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo.py>`_
- for the complete code):
-
- .. code:: python
-
- # Connect to the host
- client.connect(hostname=hostname, username=username,
password=password)
-
- # Create a client interaction class which will interact with the
host
- interact = SSHClientInteraction(client, timeout=10, display=True)
- interact.expect(prompt)
-
- # Run the first command and capture the cleaned output, if you
want the output
- # without cleaning, simply grab current_output instead.
- interact.send('uname -a')
- interact.expect(prompt)
- cmd_output_uname = interact.current_output_clean
-
- # Now let's do the same for the ls command but also set a timeout
for this
- # specific expect (overriding the default timeout)
- interact.send('ls -l /')
- interact.expect(prompt, timeout=5)
- cmd_output_ls = interact.current_output_clean
-
- # To expect multiple expressions, just use a list. You can also
selectively
- # take action based on what was matched.
-
- # Method 1: You may use the last_match property to find out what
was matched
- interact.send('~/paramiko_expect-demo-helper.py')
- interact.expect([prompt, 'Please enter your name: '])
- if interact.last_match == 'Please enter your name: ':
- interact.send('Fotis Gimian')
- interact.expect(prompt)
-
- # Method 2: You may use the matched index to determine the last
match (like pexpect)
- interact.send('~/paramiko_expect-demo-helper.py')
- found_index = interact.expect([prompt, 'Please enter your name: '])
- if found_index == 1:
- interact.send('Fotis Gimian')
- interact.expect(prompt)
-
- # Send the exit command and expect EOF (a closed session)
- interact.send('exit')
- interact.expect()
-
- # Print the output of each command
- print '-'*79
- print 'Cleaned Command Output'
- print '-'*79
- print 'uname -a output:'
- print cmd_output_uname
- print 'ls -l / output:'
- print cmd_output_ls
-
- **Important**: Before running this script, be sure to place
- `paramiko_expect-demo-helper.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo-helper.py>`_
- in ``~``.
-
- The print statements at the bottom of the script provide the following
- output:
-
- .. code:: bash
-
-
-------------------------------------------------------------------------------
- Cleaned Command Output
-
-------------------------------------------------------------------------------
- uname -a output:
- Linux fotsies-ubuntu-testlab 3.2.0-23-generic #36-Ubuntu SMP Tue
Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
-
- ls -l / output:
- total 77
- drwxr-xr-x 2 root root 4096 May 1 22:21 bin
- drwxr-xr-x 4 root root 1024 May 1 22:22 boot
- drwxr-xr-x 15 root root 4300 Jun 12 15:00 dev
- drwxr-xr-x 90 root root 4096 Jun 12 16:45 etc
- drwxr-xr-x 4 root root 4096 May 1 23:37 home
- lrwxrwxrwx 1 root root 33 May 1 22:18 initrd.img ->
/boot/initrd.img-3.2.0-23-generic
- drwxr-xr-x 18 root root 4096 May 1 22:21 lib
- drwxr-xr-x 2 root root 4096 May 1 22:17 lib64
- drwx------ 2 root root 16384 May 1 22:17 lost+found
- drwxr-xr-x 4 root root 4096 May 1 22:18 media
- drwxr-xr-x 2 root root 4096 Apr 19 19:32 mnt
- drwxr-xr-x 2 root root 4096 May 1 22:17 opt
- dr-xr-xr-x 84 root root 0 Jun 12 15:00 proc
- drwx------ 3 root root 4096 May 30 23:32 root
- drwxr-xr-x 15 root root 560 Jun 12 17:02 run
- drwxr-xr-x 2 root root 4096 Jun 4 20:59 sbin
- drwxr-xr-x 2 root root 4096 Mar 6 04:54 selinux
- drwxr-xr-x 2 root root 4096 May 1 22:17 srv
- drwxr-xr-x 13 root root 0 Jun 12 15:00 sys
- drwxrwxrwt 2 root root 4096 Jun 12 16:17 tmp
- drwxr-xr-x 10 root root 4096 May 1 22:17 usr
- drwxr-xr-x 12 root root 4096 Jun 12 13:16 var
- lrwxrwxrwx 1 root root 29 May 1 22:18 vmlinuz ->
boot/vmlinuz-3.2.0-23-generic
-
- For interacting with tail-like scripts, we can use the tail function
(please see
- `paramiko_expect-tail-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-tail-demo.py>`_
- for the complete code):
-
- .. code:: python
-
- # Connect to the host
- client.connect(hostname=hostname, username=username,
password=password)
-
- # Create a client interaction class which will interact with the
host
- interact = SSHClientInteraction(client, timeout=10, display=False)
- interact.expect(prompt)
-
- # Send the tail command
- interact.send('tail -f /var/log/auth.log')
-
- # Now let the class tail the file for us
- interact.tail(line_prefix=hostname+': ')
-
- The true power of the tail function will become more apparent when you
- check out the `Multi-SSH <https://github.com/fgimian/multissh>`_
- library. Ever thought about tailing a log on multiple servers? Well
- dream no more my friend, it's here!
-
-
- Tests
- -----
-
- Not full coverage yet, and assumes you have docker setup:
-
- .. code:: bash
-
- pip install -r requirements-test.txt
- docker run -d -p 2222:22 -v `pwd`/examples:/examples -v
`pwd`/test/id_rsa.pub:/root/.ssh/authorized_keys docker.io/panubo/sshd
- pytest -s --cov paramiko_expect --cov-report term-missing
-
-
- Contributions
- -------------
-
- - Israel Fruchter (@fruch) - Tests / CI / Uploads to Pypi
- - Kiseok Kim (@kiseok7) - Vagrent image
-
-
- License
- -------
-
- Paramiko Expect is released under the **MIT** license. Please see the
- `LICENSE
<https://github.com/fgimian/paramiko-expect/blob/master/LICENSE>`_
- file for more details.
-
Platform: Posix
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
-Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Intended Audience :: Developers
Description-Content-Type: text/x-rst
+License-File: LICENSE
+
+Paramiko Expect
+===============
+
+.. image:: https://img.shields.io/pypi/l/paramiko-expect.svg
+ :target: https://github.com/fgimian/paramiko-expect/blob/master/LICENSE
+
+.. image::
https://codecov.io/gh/fgimian/paramiko-expect/branch/master/graph/badge.svg
+ :target: https://codecov.io/gh/fgimian/paramiko-expect
+
+.. image:: https://img.shields.io/travis/fgimian/paramiko-expect.svg
+ :target: https://travis-ci.org/fruch/paramiko-expect/
+
+.. image:: https://img.shields.io/pypi/v/paramiko-expect.svg
+ :target: https://pypi.python.org/pypi/paramiko-expect/
+
+.. image:: https://img.shields.io/pypi/pyversions/paramiko-expect.svg
+ :target: https://pypi.python.org/pypi/paramiko-expect/
+
+
+.. image::
https://raw.githubusercontent.com/fgimian/paramiko-expect/master/images/paramiko-expect-logo.png
+ :alt: Paramiko Expect Logo
+
+Artwork courtesy of `Open Clip Art
+Library <https://openclipart.org/detail/174780/openmouthed-robot>`_
+
+Introduction
+------------
+
+Paramiko Expect provides an expect-like extension for the Paramiko SSH library
+which allows scripts to fully interact with hosts via a true SSH
+connection.
+
+The class is constructed with an SSH Client object (this will likely be
+extended to support a transport in future for more flexibility).
+
+Quick Start
+-----------
+
+To install paramiko-expect, simply run the following at your prompt:
+
+.. code:: bash
+
+ # from pypi
+ pip install paramiko-expect
+
+ # from source
+ pip install git+https://github.com/fgimian/paramiko-expect.git
+
+So let's check out how it works in general (please see
+`paramiko_expect-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo.py>`_
+for the complete code):
+
+.. code:: python
+
+ # Connect to the host
+ client.connect(hostname=hostname, username=username, password=password)
+
+ # Create a client interaction class which will interact with the host
+ interact = SSHClientInteraction(client, timeout=10, display=True)
+ interact.expect(prompt)
+
+ # Run the first command and capture the cleaned output, if you want the
output
+ # without cleaning, simply grab current_output instead.
+ interact.send('uname -a')
+ interact.expect(prompt)
+ cmd_output_uname = interact.current_output_clean
+
+ # Now let's do the same for the ls command but also set a timeout for this
+ # specific expect (overriding the default timeout)
+ interact.send('ls -l /')
+ interact.expect(prompt, timeout=5)
+ cmd_output_ls = interact.current_output_clean
+
+ # To expect multiple expressions, just use a list. You can also
selectively
+ # take action based on what was matched.
+
+ # Method 1: You may use the last_match property to find out what was
matched
+ interact.send('~/paramiko_expect-demo-helper.py')
+ interact.expect([prompt, 'Please enter your name: '])
+ if interact.last_match == 'Please enter your name: ':
+ interact.send('Fotis Gimian')
+ interact.expect(prompt)
+
+ # Method 2: You may use the matched index to determine the last match
(like pexpect)
+ interact.send('~/paramiko_expect-demo-helper.py')
+ found_index = interact.expect([prompt, 'Please enter your name: '])
+ if found_index == 1:
+ interact.send('Fotis Gimian')
+ interact.expect(prompt)
+
+ # Send the exit command and expect EOF (a closed session)
+ interact.send('exit')
+ interact.expect()
+
+ # Print the output of each command
+ print '-'*79
+ print 'Cleaned Command Output'
+ print '-'*79
+ print 'uname -a output:'
+ print cmd_output_uname
+ print 'ls -l / output:'
+ print cmd_output_ls
+
+**Important**: Before running this script, be sure to place
+`paramiko_expect-demo-helper.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo-helper.py>`_
+in ``~``.
+
+The print statements at the bottom of the script provide the following
+output:
+
+.. code:: bash
+
+
-------------------------------------------------------------------------------
+ Cleaned Command Output
+
-------------------------------------------------------------------------------
+ uname -a output:
+ Linux fotsies-ubuntu-testlab 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10
20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
+
+ ls -l / output:
+ total 77
+ drwxr-xr-x 2 root root 4096 May 1 22:21 bin
+ drwxr-xr-x 4 root root 1024 May 1 22:22 boot
+ drwxr-xr-x 15 root root 4300 Jun 12 15:00 dev
+ drwxr-xr-x 90 root root 4096 Jun 12 16:45 etc
+ drwxr-xr-x 4 root root 4096 May 1 23:37 home
+ lrwxrwxrwx 1 root root 33 May 1 22:18 initrd.img ->
/boot/initrd.img-3.2.0-23-generic
+ drwxr-xr-x 18 root root 4096 May 1 22:21 lib
+ drwxr-xr-x 2 root root 4096 May 1 22:17 lib64
+ drwx------ 2 root root 16384 May 1 22:17 lost+found
+ drwxr-xr-x 4 root root 4096 May 1 22:18 media
+ drwxr-xr-x 2 root root 4096 Apr 19 19:32 mnt
+ drwxr-xr-x 2 root root 4096 May 1 22:17 opt
+ dr-xr-xr-x 84 root root 0 Jun 12 15:00 proc
+ drwx------ 3 root root 4096 May 30 23:32 root
+ drwxr-xr-x 15 root root 560 Jun 12 17:02 run
+ drwxr-xr-x 2 root root 4096 Jun 4 20:59 sbin
+ drwxr-xr-x 2 root root 4096 Mar 6 04:54 selinux
+ drwxr-xr-x 2 root root 4096 May 1 22:17 srv
+ drwxr-xr-x 13 root root 0 Jun 12 15:00 sys
+ drwxrwxrwt 2 root root 4096 Jun 12 16:17 tmp
+ drwxr-xr-x 10 root root 4096 May 1 22:17 usr
+ drwxr-xr-x 12 root root 4096 Jun 12 13:16 var
+ lrwxrwxrwx 1 root root 29 May 1 22:18 vmlinuz ->
boot/vmlinuz-3.2.0-23-generic
+
+For interacting with tail-like scripts, we can use the tail function (please
see
+`paramiko_expect-tail-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-tail-demo.py>`_
+for the complete code):
+
+.. code:: python
+
+ # Connect to the host
+ client.connect(hostname=hostname, username=username, password=password)
+
+ # Create a client interaction class which will interact with the host
+ interact = SSHClientInteraction(client, timeout=10, display=False)
+ interact.expect(prompt)
+
+ # Send the tail command
+ interact.send('tail -f /var/log/auth.log')
+
+ # Now let the class tail the file for us
+ interact.tail(line_prefix=hostname+': ')
+
+The true power of the tail function will become more apparent when you
+check out the `Multi-SSH <https://github.com/fgimian/multissh>`_
+library. Ever thought about tailing a log on multiple servers? Well
+dream no more my friend, it's here!
+
+
+Tests
+-----
+
+Not full coverage yet, and assumes you have docker setup:
+
+.. code:: bash
+
+ pip install -r requirements-test.txt
+ docker run -d -p 2222:22 -v `pwd`/examples:/examples -v
`pwd`/test/id_rsa.pub:/root/.ssh/authorized_keys docker.io/panubo/sshd
+ pytest -s --cov paramiko_expect --cov-report term-missing
+
+
+Contributions
+-------------
+
+- Israel Fruchter (@fruch) - Tests / CI / Uploads to Pypi
+- Kiseok Kim (@kiseok7) - Vagrent image
+
+
+License
+-------
+
+Paramiko Expect is released under the **MIT** license. Please see the
+`LICENSE <https://github.com/fgimian/paramiko-expect/blob/master/LICENSE>`_
+file for more details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/paramiko-expect-0.3.2/paramiko_expect.egg-info/PKG-INFO
new/paramiko-expect-0.3.4/paramiko_expect.egg-info/PKG-INFO
--- old/paramiko-expect-0.3.2/paramiko_expect.egg-info/PKG-INFO 2022-01-13
13:07:35.000000000 +0100
+++ new/paramiko-expect-0.3.4/paramiko_expect.egg-info/PKG-INFO 2022-09-19
20:26:16.000000000 +0200
@@ -1,213 +1,216 @@
Metadata-Version: 2.1
Name: paramiko-expect
-Version: 0.3.2
+Version: 0.3.4
Summary: An expect-like extension for the Paramiko SSH library
Home-page: https://github.com/fgimian/paramiko-expect
Author: Fotis Gimian
Author-email: [email protected]
License: MIT
-Description: Paramiko Expect
- ===============
-
- .. image:: https://img.shields.io/pypi/l/paramiko-expect.svg
- :target:
https://github.com/fgimian/paramiko-expect/blob/master/LICENSE
-
- .. image::
https://codecov.io/gh/fgimian/paramiko-expect/branch/master/graph/badge.svg
- :target: https://codecov.io/gh/fgimian/paramiko-expect
-
- .. image:: https://img.shields.io/travis/fgimian/paramiko-expect.svg
- :target: https://travis-ci.org/fruch/paramiko-expect/
-
- .. image:: https://img.shields.io/pypi/v/paramiko-expect.svg
- :target: https://pypi.python.org/pypi/paramiko-expect/
-
- .. image:: https://img.shields.io/pypi/pyversions/paramiko-expect.svg
- :target: https://pypi.python.org/pypi/paramiko-expect/
-
-
- .. image::
https://raw.githubusercontent.com/fgimian/paramiko-expect/master/images/paramiko-expect-logo.png
- :alt: Paramiko Expect Logo
-
- Artwork courtesy of `Open Clip Art
- Library <https://openclipart.org/detail/174780/openmouthed-robot>`_
-
- Introduction
- ------------
-
- Paramiko Expect provides an expect-like extension for the Paramiko SSH
library
- which allows scripts to fully interact with hosts via a true SSH
- connection.
-
- The class is constructed with an SSH Client object (this will likely be
- extended to support a transport in future for more flexibility).
-
- Quick Start
- -----------
-
- To install paramiko-expect, simply run the following at your prompt:
-
- .. code:: bash
-
- # from pypi
- pip install paramiko-expect
-
- # from source
- pip install git+https://github.com/fgimian/paramiko-expect.git
-
- So let's check out how it works in general (please see
- `paramiko_expect-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo.py>`_
- for the complete code):
-
- .. code:: python
-
- # Connect to the host
- client.connect(hostname=hostname, username=username,
password=password)
-
- # Create a client interaction class which will interact with the
host
- interact = SSHClientInteraction(client, timeout=10, display=True)
- interact.expect(prompt)
-
- # Run the first command and capture the cleaned output, if you
want the output
- # without cleaning, simply grab current_output instead.
- interact.send('uname -a')
- interact.expect(prompt)
- cmd_output_uname = interact.current_output_clean
-
- # Now let's do the same for the ls command but also set a timeout
for this
- # specific expect (overriding the default timeout)
- interact.send('ls -l /')
- interact.expect(prompt, timeout=5)
- cmd_output_ls = interact.current_output_clean
-
- # To expect multiple expressions, just use a list. You can also
selectively
- # take action based on what was matched.
-
- # Method 1: You may use the last_match property to find out what
was matched
- interact.send('~/paramiko_expect-demo-helper.py')
- interact.expect([prompt, 'Please enter your name: '])
- if interact.last_match == 'Please enter your name: ':
- interact.send('Fotis Gimian')
- interact.expect(prompt)
-
- # Method 2: You may use the matched index to determine the last
match (like pexpect)
- interact.send('~/paramiko_expect-demo-helper.py')
- found_index = interact.expect([prompt, 'Please enter your name: '])
- if found_index == 1:
- interact.send('Fotis Gimian')
- interact.expect(prompt)
-
- # Send the exit command and expect EOF (a closed session)
- interact.send('exit')
- interact.expect()
-
- # Print the output of each command
- print '-'*79
- print 'Cleaned Command Output'
- print '-'*79
- print 'uname -a output:'
- print cmd_output_uname
- print 'ls -l / output:'
- print cmd_output_ls
-
- **Important**: Before running this script, be sure to place
- `paramiko_expect-demo-helper.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo-helper.py>`_
- in ``~``.
-
- The print statements at the bottom of the script provide the following
- output:
-
- .. code:: bash
-
-
-------------------------------------------------------------------------------
- Cleaned Command Output
-
-------------------------------------------------------------------------------
- uname -a output:
- Linux fotsies-ubuntu-testlab 3.2.0-23-generic #36-Ubuntu SMP Tue
Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
-
- ls -l / output:
- total 77
- drwxr-xr-x 2 root root 4096 May 1 22:21 bin
- drwxr-xr-x 4 root root 1024 May 1 22:22 boot
- drwxr-xr-x 15 root root 4300 Jun 12 15:00 dev
- drwxr-xr-x 90 root root 4096 Jun 12 16:45 etc
- drwxr-xr-x 4 root root 4096 May 1 23:37 home
- lrwxrwxrwx 1 root root 33 May 1 22:18 initrd.img ->
/boot/initrd.img-3.2.0-23-generic
- drwxr-xr-x 18 root root 4096 May 1 22:21 lib
- drwxr-xr-x 2 root root 4096 May 1 22:17 lib64
- drwx------ 2 root root 16384 May 1 22:17 lost+found
- drwxr-xr-x 4 root root 4096 May 1 22:18 media
- drwxr-xr-x 2 root root 4096 Apr 19 19:32 mnt
- drwxr-xr-x 2 root root 4096 May 1 22:17 opt
- dr-xr-xr-x 84 root root 0 Jun 12 15:00 proc
- drwx------ 3 root root 4096 May 30 23:32 root
- drwxr-xr-x 15 root root 560 Jun 12 17:02 run
- drwxr-xr-x 2 root root 4096 Jun 4 20:59 sbin
- drwxr-xr-x 2 root root 4096 Mar 6 04:54 selinux
- drwxr-xr-x 2 root root 4096 May 1 22:17 srv
- drwxr-xr-x 13 root root 0 Jun 12 15:00 sys
- drwxrwxrwt 2 root root 4096 Jun 12 16:17 tmp
- drwxr-xr-x 10 root root 4096 May 1 22:17 usr
- drwxr-xr-x 12 root root 4096 Jun 12 13:16 var
- lrwxrwxrwx 1 root root 29 May 1 22:18 vmlinuz ->
boot/vmlinuz-3.2.0-23-generic
-
- For interacting with tail-like scripts, we can use the tail function
(please see
- `paramiko_expect-tail-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-tail-demo.py>`_
- for the complete code):
-
- .. code:: python
-
- # Connect to the host
- client.connect(hostname=hostname, username=username,
password=password)
-
- # Create a client interaction class which will interact with the
host
- interact = SSHClientInteraction(client, timeout=10, display=False)
- interact.expect(prompt)
-
- # Send the tail command
- interact.send('tail -f /var/log/auth.log')
-
- # Now let the class tail the file for us
- interact.tail(line_prefix=hostname+': ')
-
- The true power of the tail function will become more apparent when you
- check out the `Multi-SSH <https://github.com/fgimian/multissh>`_
- library. Ever thought about tailing a log on multiple servers? Well
- dream no more my friend, it's here!
-
-
- Tests
- -----
-
- Not full coverage yet, and assumes you have docker setup:
-
- .. code:: bash
-
- pip install -r requirements-test.txt
- docker run -d -p 2222:22 -v `pwd`/examples:/examples -v
`pwd`/test/id_rsa.pub:/root/.ssh/authorized_keys docker.io/panubo/sshd
- pytest -s --cov paramiko_expect --cov-report term-missing
-
-
- Contributions
- -------------
-
- - Israel Fruchter (@fruch) - Tests / CI / Uploads to Pypi
- - Kiseok Kim (@kiseok7) - Vagrent image
-
-
- License
- -------
-
- Paramiko Expect is released under the **MIT** license. Please see the
- `LICENSE
<https://github.com/fgimian/paramiko-expect/blob/master/LICENSE>`_
- file for more details.
-
Platform: Posix
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
-Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Intended Audience :: Developers
Description-Content-Type: text/x-rst
+License-File: LICENSE
+
+Paramiko Expect
+===============
+
+.. image:: https://img.shields.io/pypi/l/paramiko-expect.svg
+ :target: https://github.com/fgimian/paramiko-expect/blob/master/LICENSE
+
+.. image::
https://codecov.io/gh/fgimian/paramiko-expect/branch/master/graph/badge.svg
+ :target: https://codecov.io/gh/fgimian/paramiko-expect
+
+.. image:: https://img.shields.io/travis/fgimian/paramiko-expect.svg
+ :target: https://travis-ci.org/fruch/paramiko-expect/
+
+.. image:: https://img.shields.io/pypi/v/paramiko-expect.svg
+ :target: https://pypi.python.org/pypi/paramiko-expect/
+
+.. image:: https://img.shields.io/pypi/pyversions/paramiko-expect.svg
+ :target: https://pypi.python.org/pypi/paramiko-expect/
+
+
+.. image::
https://raw.githubusercontent.com/fgimian/paramiko-expect/master/images/paramiko-expect-logo.png
+ :alt: Paramiko Expect Logo
+
+Artwork courtesy of `Open Clip Art
+Library <https://openclipart.org/detail/174780/openmouthed-robot>`_
+
+Introduction
+------------
+
+Paramiko Expect provides an expect-like extension for the Paramiko SSH library
+which allows scripts to fully interact with hosts via a true SSH
+connection.
+
+The class is constructed with an SSH Client object (this will likely be
+extended to support a transport in future for more flexibility).
+
+Quick Start
+-----------
+
+To install paramiko-expect, simply run the following at your prompt:
+
+.. code:: bash
+
+ # from pypi
+ pip install paramiko-expect
+
+ # from source
+ pip install git+https://github.com/fgimian/paramiko-expect.git
+
+So let's check out how it works in general (please see
+`paramiko_expect-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo.py>`_
+for the complete code):
+
+.. code:: python
+
+ # Connect to the host
+ client.connect(hostname=hostname, username=username, password=password)
+
+ # Create a client interaction class which will interact with the host
+ interact = SSHClientInteraction(client, timeout=10, display=True)
+ interact.expect(prompt)
+
+ # Run the first command and capture the cleaned output, if you want the
output
+ # without cleaning, simply grab current_output instead.
+ interact.send('uname -a')
+ interact.expect(prompt)
+ cmd_output_uname = interact.current_output_clean
+
+ # Now let's do the same for the ls command but also set a timeout for this
+ # specific expect (overriding the default timeout)
+ interact.send('ls -l /')
+ interact.expect(prompt, timeout=5)
+ cmd_output_ls = interact.current_output_clean
+
+ # To expect multiple expressions, just use a list. You can also
selectively
+ # take action based on what was matched.
+
+ # Method 1: You may use the last_match property to find out what was
matched
+ interact.send('~/paramiko_expect-demo-helper.py')
+ interact.expect([prompt, 'Please enter your name: '])
+ if interact.last_match == 'Please enter your name: ':
+ interact.send('Fotis Gimian')
+ interact.expect(prompt)
+
+ # Method 2: You may use the matched index to determine the last match
(like pexpect)
+ interact.send('~/paramiko_expect-demo-helper.py')
+ found_index = interact.expect([prompt, 'Please enter your name: '])
+ if found_index == 1:
+ interact.send('Fotis Gimian')
+ interact.expect(prompt)
+
+ # Send the exit command and expect EOF (a closed session)
+ interact.send('exit')
+ interact.expect()
+
+ # Print the output of each command
+ print '-'*79
+ print 'Cleaned Command Output'
+ print '-'*79
+ print 'uname -a output:'
+ print cmd_output_uname
+ print 'ls -l / output:'
+ print cmd_output_ls
+
+**Important**: Before running this script, be sure to place
+`paramiko_expect-demo-helper.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-demo-helper.py>`_
+in ``~``.
+
+The print statements at the bottom of the script provide the following
+output:
+
+.. code:: bash
+
+
-------------------------------------------------------------------------------
+ Cleaned Command Output
+
-------------------------------------------------------------------------------
+ uname -a output:
+ Linux fotsies-ubuntu-testlab 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10
20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
+
+ ls -l / output:
+ total 77
+ drwxr-xr-x 2 root root 4096 May 1 22:21 bin
+ drwxr-xr-x 4 root root 1024 May 1 22:22 boot
+ drwxr-xr-x 15 root root 4300 Jun 12 15:00 dev
+ drwxr-xr-x 90 root root 4096 Jun 12 16:45 etc
+ drwxr-xr-x 4 root root 4096 May 1 23:37 home
+ lrwxrwxrwx 1 root root 33 May 1 22:18 initrd.img ->
/boot/initrd.img-3.2.0-23-generic
+ drwxr-xr-x 18 root root 4096 May 1 22:21 lib
+ drwxr-xr-x 2 root root 4096 May 1 22:17 lib64
+ drwx------ 2 root root 16384 May 1 22:17 lost+found
+ drwxr-xr-x 4 root root 4096 May 1 22:18 media
+ drwxr-xr-x 2 root root 4096 Apr 19 19:32 mnt
+ drwxr-xr-x 2 root root 4096 May 1 22:17 opt
+ dr-xr-xr-x 84 root root 0 Jun 12 15:00 proc
+ drwx------ 3 root root 4096 May 30 23:32 root
+ drwxr-xr-x 15 root root 560 Jun 12 17:02 run
+ drwxr-xr-x 2 root root 4096 Jun 4 20:59 sbin
+ drwxr-xr-x 2 root root 4096 Mar 6 04:54 selinux
+ drwxr-xr-x 2 root root 4096 May 1 22:17 srv
+ drwxr-xr-x 13 root root 0 Jun 12 15:00 sys
+ drwxrwxrwt 2 root root 4096 Jun 12 16:17 tmp
+ drwxr-xr-x 10 root root 4096 May 1 22:17 usr
+ drwxr-xr-x 12 root root 4096 Jun 12 13:16 var
+ lrwxrwxrwx 1 root root 29 May 1 22:18 vmlinuz ->
boot/vmlinuz-3.2.0-23-generic
+
+For interacting with tail-like scripts, we can use the tail function (please
see
+`paramiko_expect-tail-demo.py
<https://github.com/fgimian/paramiko-expect/blob/master/examples/paramiko_expect-tail-demo.py>`_
+for the complete code):
+
+.. code:: python
+
+ # Connect to the host
+ client.connect(hostname=hostname, username=username, password=password)
+
+ # Create a client interaction class which will interact with the host
+ interact = SSHClientInteraction(client, timeout=10, display=False)
+ interact.expect(prompt)
+
+ # Send the tail command
+ interact.send('tail -f /var/log/auth.log')
+
+ # Now let the class tail the file for us
+ interact.tail(line_prefix=hostname+': ')
+
+The true power of the tail function will become more apparent when you
+check out the `Multi-SSH <https://github.com/fgimian/multissh>`_
+library. Ever thought about tailing a log on multiple servers? Well
+dream no more my friend, it's here!
+
+
+Tests
+-----
+
+Not full coverage yet, and assumes you have docker setup:
+
+.. code:: bash
+
+ pip install -r requirements-test.txt
+ docker run -d -p 2222:22 -v `pwd`/examples:/examples -v
`pwd`/test/id_rsa.pub:/root/.ssh/authorized_keys docker.io/panubo/sshd
+ pytest -s --cov paramiko_expect --cov-report term-missing
+
+
+Contributions
+-------------
+
+- Israel Fruchter (@fruch) - Tests / CI / Uploads to Pypi
+- Kiseok Kim (@kiseok7) - Vagrent image
+
+
+License
+-------
+
+Paramiko Expect is released under the **MIT** license. Please see the
+`LICENSE <https://github.com/fgimian/paramiko-expect/blob/master/LICENSE>`_
+file for more details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/paramiko-expect-0.3.2/paramiko_expect.egg-info/SOURCES.txt
new/paramiko-expect-0.3.4/paramiko_expect.egg-info/SOURCES.txt
--- old/paramiko-expect-0.3.2/paramiko_expect.egg-info/SOURCES.txt
2022-01-13 13:07:35.000000000 +0100
+++ new/paramiko-expect-0.3.4/paramiko_expect.egg-info/SOURCES.txt
2022-09-19 20:26:16.000000000 +0200
@@ -1,3 +1,4 @@
+LICENSE
README.rst
paramiko_expect.py
setup.cfg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/paramiko-expect-0.3.2/paramiko_expect.py
new/paramiko-expect-0.3.4/paramiko_expect.py
--- old/paramiko-expect-0.3.2/paramiko_expect.py 2021-12-14
15:03:04.000000000 +0100
+++ new/paramiko-expect-0.3.4/paramiko_expect.py 2022-09-19
20:21:34.000000000 +0200
@@ -35,7 +35,7 @@
def strip_ansi_codes(s):
- return re.sub(r'\x1b\[([0-9,A-Z]{1,2}(;[0-9]{1,2})?(;[0-9]{3})?)?[m|K]?',
'', s)
+ return
re.sub(r'\x1b\[([0-9,A-Z]{1,2}(;[0-9]{1,2})?(;[0-9]{3})?)?[m|K]?|\?(1049|2004)[hl]',
'', s)
def default_output_func(msg):
@@ -168,7 +168,7 @@
):
current_buffer_output_decoded = ''
# avoids paramiko hang when recv is not ready yet
- while not self.channel.recv_ready():
+ while not self.channel.closed and not self.channel.recv_ready():
time.sleep(.009)
if time.time() >= (base_time + timeout):
print('EXCESS TIME RECV_READY TIMEOUT, did you expect()
before a send()')
@@ -368,6 +368,10 @@
# Restore the attributes of the shell you were in
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, original_tty)
else:
+ # We must set the timeout to None so that we can bypass times when
+ # there is no available text to receive
+ self.channel.settimeout(None)
+
def writeall(sock):
while True:
buffer = sock.recv(self.buffer_size)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/paramiko-expect-0.3.2/setup.py
new/paramiko-expect-0.3.4/setup.py
--- old/paramiko-expect-0.3.2/setup.py 2022-01-13 13:07:25.000000000 +0100
+++ new/paramiko-expect-0.3.4/setup.py 2022-09-19 20:22:14.000000000 +0200
@@ -8,7 +8,7 @@
setup(
name='paramiko-expect',
- version='0.3.2',
+ version='0.3.4',
url='https://github.com/fgimian/paramiko-expect',
license='MIT',
author='Fotis Gimian',
@@ -24,10 +24,12 @@
classifiers=[
'Development Status :: 4 - Beta',
'License :: OSI Approved :: MIT License',
- 'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: Implementation :: PyPy',
'Intended Audience :: Developers'
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/paramiko-expect-0.3.2/test/test_paramiko_expect.py
new/paramiko-expect-0.3.4/test/test_paramiko_expect.py
--- old/paramiko-expect-0.3.2/test/test_paramiko_expect.py 2022-01-13
13:07:25.000000000 +0100
+++ new/paramiko-expect-0.3.4/test/test_paramiko_expect.py 2022-09-19
20:21:34.000000000 +0200
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import socket
+import logging
import pytest
try:
@@ -17,17 +18,27 @@
except ImportError:
from contextlib2 import ExitStack
+from ssh import SshContainer
+
prompt = ".*:~#.*"
[email protected](scope="session")
+def docker_ssh():
+ with SshContainer() as container:
+ print(container._container.logs().decode())
+ yield container
+
+
@pytest.fixture(scope="module")
-def interact(request):
+def interact(request, docker_ssh):
# Create a new SSH client object
client = paramiko.SSHClient()
# Set SSH key parameters to auto accept unknown hosts
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Connect to the host
- client.connect(hostname="localhost", username="root", port=2222,
key_filename='./test/id_rsa')
+ hostname, port = docker_ssh.get_address()
+ client.connect(hostname=hostname, username="root", port=port,
key_filename='./test/id_rsa')
# Create a client interaction class which will interact with the host
interact = SSHClientInteraction(client, timeout=10, display=True)
@@ -103,10 +114,11 @@
interact.tail(line_prefix="test:", callback=lambda p, m: "",
stop_callback=stop_callback)
-def test_05_context():
+def test_05_context(docker_ssh):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- client.connect(hostname="localhost", username="root", port=2222,
key_filename='./test/id_rsa')
+ hostname, port = docker_ssh.get_address()
+ client.connect(hostname=hostname, username="root", port=port,
key_filename='./test/id_rsa')
with SSHClientInteraction(client, timeout=10, display=True) as interact:
interact.send('ls -all /')
interact.expect(prompt, timeout=120)
@@ -224,10 +236,11 @@
interact.close()
-def test_08_issue_25_skip_newline():
+def test_08_issue_25_skip_newline(docker_ssh):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- client.connect(hostname="localhost", username="root", port=2222,
key_filename='./test/id_rsa')
+ hostname, port = docker_ssh.get_address()
+ client.connect(hostname=hostname, username="root", port=port,
key_filename='./test/id_rsa')
with SSHClientInteraction(client, timeout=10, display=True) as interact:
interact.send('ls -all')
interact.expect(prompt, timeout=5)
@@ -241,5 +254,6 @@
interact.send('ls -all')
interact.expect(prompt, timeout=5)
+
def test_09_utf8(interact):
interact.send(u'Andr??')