Python Tips and Tricks

蓝咒 提交于 2019-11-26 16:18:04


1.  Install Python into Windows

1.1 Download Latest Python 2 file from https://www.python.org/downloads/windows/

1.2 Double Click download python-2.7.15.exe file to install it.

1.3 Run Python
By Default, it will be installed at c:\Python27 folder

 
C:\Users\John>cd \  C:\>cd Python27  C:\Python27>python --version Python 2.7.15  C:\Python27>python Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (In tel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>  


1.4 Install paramiko module
Paramiko is a Python (2.7, 3.4+) implementation of the SSHv2 protocol [1], providing both client and server functionality. While it leverages a Python C extension for low level cryptography (Cryptography), Paramiko itself is a pure Python interface around SSH networking concepts.

  • Install Python 2.7.11
  • Download and install pycrypto win-amd64-py2.7.exe
  • Now open a command prompt. If you have installed python at the following location:

c:\Python27 then change directory and go to Scripts directory.

pip install paramiko

  • Now Test with the following command:

import paramiko

C:\Python27>cd Scripts  C:\Python27\Scripts>pip install paramiko Collecting paramiko   Downloading https://files.pythonhosted.org/packages/3e/db/cb7b6656e0e7387637ce 850689084dc0b94b44df31cc52e5fc5c2c4fd2c1/paramiko-2.4.1-py2.py3-none-any.whl (19 4kB)     100% |################################| 194kB 1.2MB/s Collecting bcrypt>=3.1.3 (from paramiko)   Downloading https://files.pythonhosted.org/packages/4c/49/26ea2bf908e8d4250023 e3b104e01b97ce48d6a7687c589c15d0a9f57fda/bcrypt-3.1.4-cp27-cp27m-win32.whl Collecting pyasn1>=0.1.7 (from paramiko)   Downloading https://files.pythonhosted.org/packages/d1/a1/7790cc85db38daa874f6 a2e6308131b9953feb1367f2ae2d1123bb93a9f5/pyasn1-0.4.4-py2.py3-none-any.whl (72kB )     100% |################################| 81kB 1.6MB/s Collecting pynacl>=1.0.1 (from paramiko)   Downloading https://files.pythonhosted.org/packages/f9/cc/0f1eb2ff37aa1b89cdc0 6c1721d057ca648efe7f51a4b67c29cee9db9f33/PyNaCl-1.2.1-cp27-cp27m-win32.whl (162k B)     100% |################################| 163kB 1.3MB/s Collecting cryptography>=1.5 (from paramiko)   Downloading https://files.pythonhosted.org/packages/24/fc/4c5459b470068692fadd 135080bbec1ee5b9e9de27cfd04f5a0d4b7a2400/cryptography-2.3.1-cp27-cp27m-win32.whl  (1.1MB)     100% |################################| 1.1MB 716kB/s Collecting six>=1.4.1 (from bcrypt>=3.1.3->paramiko)   Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa 78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl Collecting cffi>=1.1 (from bcrypt>=3.1.3->paramiko)   Downloading https://files.pythonhosted.org/packages/3a/84/9d1bf29b212853087318 696c38241a3af65b33ea2edaabad11f26826ecf4/cffi-1.11.5-cp27-cp27m-win32.whl (153kB )     100% |################################| 153kB 1.2MB/s Collecting enum34; python_version < "3" (from cryptography>=1.5->paramiko)   Downloading https://files.pythonhosted.org/packages/c5/db/e56e6b4bbac7c4a06de1 c50de6fe1ef3810018ae11732a50f15f62c7d050/enum34-1.1.6-py2-none-any.whl Collecting idna>=2.1 (from cryptography>=1.5->paramiko)   Downloading https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1 af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)     100% |################################| 61kB 1.7MB/s Collecting asn1crypto>=0.21.0 (from cryptography>=1.5->paramiko)   Downloading https://files.pythonhosted.org/packages/ea/cd/35485615f45f30a51057 6f1a56d1e0a7ad7bd8ab5ed7cdc600ef7cd06222/asn1crypto-0.24.0-py2.py3-none-any.whl (101kB)     100% |################################| 102kB 1.7MB/s Collecting ipaddress; python_version < "3" (from cryptography>=1.5->paramiko)   Downloading https://files.pythonhosted.org/packages/fc/d0/7fc3a811e011d4b388be 48a0e381db8d990042df54aa4ef4599a31d39853/ipaddress-1.0.22-py2.py3-none-any.whl Collecting pycparser (from cffi>=1.1->bcrypt>=3.1.3->paramiko)   Downloading https://files.pythonhosted.org/packages/8c/2d/aad7f16146f4197a11f8 e91fb81df177adcc2073d36a17b1491fd09df6ed/pycparser-2.18.tar.gz (245kB)     100% |################################| 256kB 1.2MB/s Installing collected packages: six, pycparser, cffi, bcrypt, pyasn1, pynacl, enu m34, idna, asn1crypto, ipaddress, cryptography, paramiko   Running setup.py install for pycparser ... done Successfully installed asn1crypto-0.24.0 bcrypt-3.1.4 cffi-1.11.5 cryptography-2 .3.1 enum34-1.1.6 idna-2.7 ipaddress-1.0.22 paramiko-2.4.1 pyasn1-0.4.4 pycparse r-2.18 pynacl-1.2.1 six-1.11.0 You are using pip version 9.0.3, however version 18.0 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' comm and.  C:\Python27\Scripts>cd ..  C:\Python27>python Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (In tel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import paramiko >>> exit()  C:\Python27>   

2. Install Python 2.7 / 3.0 on AWS EC2 Instance

 
[[email protected] pexpect-2.3]$ python --version Python 2.7.14 


 
[[email protected] pexpect-2.3]$ sudo yum install python Loaded plugins: priorities, update-motd, upgrade-helper amzn-main                                                                             | 2.1 kB  00:00:00 amzn-updates                                                                          | 2.5 kB  00:00:00 Resolving Dependencies --> Running transaction check ---> Package python26.x86_64 0:2.6.9-2.89.amzn1 will be installed --> Processing Dependency: libpython2.6.so.1.0()(64bit) for package: python26-2.6.9-2.89.amzn1.x86_64 --> Running transaction check ---> Package python26-libs.x86_64 0:2.6.9-2.89.amzn1 will be installed --> Finished Dependency Resolution  Dependencies Resolved  =============================================================================================================  Package                    Arch                Version                         Repository              Size ============================================================================================================= Installing:  python26                   x86_64              2.6.9-2.89.amzn1                amzn-main              5.8 M Installing for dependencies:  python26-libs              x86_64              2.6.9-2.89.amzn1                amzn-main              697 k  Transaction Summary ============================================================================================================= Install  1 Package (+1 Dependent package)  Total download size: 6.4 M Installed size: 21 M Is this ok [y/d/N]: ^Cn Exiting on user command Your transaction was saved, rerun it with:  yum load-transaction /tmp/yum_save_tx.2018-06-21.18-42.2ccPPk.yumtx 
 
[[email protected] pexpect-2.3]$ python --version Python 2.7.14 [[email protected] pexpect-2.3]$ sudo apt-get install python3 sudo: apt-get: command not found [[email protected] pexpect-2.3]$ sudo yum install python Loaded plugins: priorities, update-motd, upgrade-helper amzn-main                                                                             | 2.1 kB  00:00:00 amzn-updates                                                                          | 2.5 kB  00:00:00 Package python26-2.6.9-2.89.amzn1.x86_64 already installed and latest version Nothing to do  
[[email protected] pexpect-2.3]$ sudo yum list | grep python3 mod24_wsgi-python34.x86_64            3.5-1.25.amzn1                amzn-updates mod24_wsgi-python35.x86_64            3.5-1.25.amzn1                amzn-updates mod24_wsgi-python36.x86_64            3.5-1.25.amzn1                amzn-updates python34.x86_64                       3.4.8-1.39.amzn1              amzn-updates python34-devel.x86_64                 3.4.8-1.39.amzn1              amzn-updates python34-docs.noarch                  3.4.3-1.23.amzn1              amzn-main python34-libs.i686                    3.4.8-1.39.amzn1              amzn-updates python34-libs.x86_64                  3.4.8-1.39.amzn1              amzn-updates python34-pip.noarch                   9.0.3-1.26.amzn1              amzn-updates python34-setuptools.noarch            36.2.7-1.33.amzn1             amzn-main [[email protected] pexpect-2.3]$ sudo yum install python34 Loaded plugins: priorities, update-motd, upgrade-helper Resolving Dependencies --> Running transaction check ---> Package python34.x86_64 0:3.4.8-1.39.amzn1 will be installed --> Processing Dependency: python34-libs(x86-64) = 3.4.8-1.39.amzn1 for package: python34-3.4.8-1.39.amzn1.x86_64 --> Processing Dependency: libpython3.4m.so.1.0()(64bit) for package: python34-3.4.8-1.39.amzn1.x86_64 --> Running transaction check ---> Package python34-libs.x86_64 0:3.4.8-1.39.amzn1 will be installed --> Finished Dependency Resolution  Dependencies Resolved  =============================================================================================================  Package                   Arch               Version                         Repository                Size ============================================================================================================= Installing:  python34                  x86_64             3.4.8-1.39.amzn1                amzn-updates              54 k Installing for dependencies:  python34-libs             x86_64             3.4.8-1.39.amzn1                amzn-updates             9.8 M  Transaction Summary ============================================================================================================= Install  1 Package (+1 Dependent package)  Total download size: 9.8 M Installed size: 27 M Is this ok [y/d/N]: y Downloading packages: (1/2): python34-3.4.8-1.39.amzn1.x86_64.rpm                                           |  54 kB  00:00:00 (2/2): python34-libs-3.4.8-1.39.amzn1.x86_64.rpm                                      | 9.8 MB  00:00:00 ------------------------------------------------------------------------------------------------------------- Total                                                                         20 MB/s | 9.8 MB  00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction   Installing : python34-3.4.8-1.39.amzn1.x86_64                                                          1/2   Installing : python34-libs-3.4.8-1.39.amzn1.x86_64                                                     2/2   Verifying  : python34-libs-3.4.8-1.39.amzn1.x86_64                                                     1/2   Verifying  : python34-3.4.8-1.39.amzn1.x86_64                                                          2/2  Installed:   python34.x86_64 0:3.4.8-1.39.amzn1  Dependency Installed:   python34-libs.x86_64 0:3.4.8-1.39.amzn1  Complete! [[email protected] pexpect-2.3]$ [[email protected] pexpect-2.3]$ python --version Python 2.7.14 [[email protected] pexpect-2.3]$ python3 --version Python 3.4.8 [[email protected] pexpect-2.3]$
 
[[email protected] ~]$ python3 Python 3.4.8 (default, Apr 25 2018, 23:50:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello World") Hello World >>> 

 [[email protected] ~]$ sudo yum update Loaded plugins: priorities, update-motd, upgrade-helper amzn-main                                                                                                                                        | 2.1 kB  00:00:00 amzn-updates                                                                                                                                     | 2.5 kB  00:00:00 Resolving Dependencies --> Running transaction check ---> Package cloud-init.noarch 0:0.7.6-2.15.amzn1 will be updated ---> Package cloud-init.noarch 0:0.7.6-2.16.amzn1 will be an update ---> Package dhclient.x86_64 12:4.1.1-53.P1.27.amzn1 will be updated ---> Package dhclient.x86_64 12:4.1.1-53.P1.28.amzn1 will be an update ---> Package dhcp-common.x86_64 12:4.1.1-53.P1.27.amzn1 will be updated ---> Package dhcp-common.x86_64 12:4.1.1-53.P1.28.amzn1 will be an update ---> Package gnupg2.x86_64 0:2.0.28-1.30.amzn1 will be updated ---> Package gnupg2.x86_64 0:2.0.28-2.31.amzn1 will be an update ---> Package kernel.x86_64 0:4.14.51-60.38.amzn1 will be installed ---> Package kernel-tools.x86_64 0:4.14.47-56.37.amzn1 will be updated ---> Package kernel-tools.x86_64 0:4.14.51-60.38.amzn1 will be an update ---> Package ntp.x86_64 0:4.2.6p5-44.36.amzn1 will be updated ---> Package ntp.x86_64 0:4.2.8p11-2.38.amzn1 will be an update ---> Package ntpdate.x86_64 0:4.2.6p5-44.36.amzn1 will be updated ---> Package ntpdate.x86_64 0:4.2.8p11-2.38.amzn1 will be an update ---> Package openssh.x86_64 0:7.4p1-11.68.amzn1 will be updated ---> Package openssh.x86_64 0:7.4p1-16.69.amzn1 will be an update ---> Package openssh-clients.x86_64 0:7.4p1-11.68.amzn1 will be updated ---> Package openssh-clients.x86_64 0:7.4p1-16.69.amzn1 will be an update ---> Package openssh-server.x86_64 0:7.4p1-11.68.amzn1 will be updated ---> Package openssh-server.x86_64 0:7.4p1-16.69.amzn1 will be an update ---> Package openssl.x86_64 1:1.0.2k-8.107.amzn1 will be updated ---> Package openssl.x86_64 1:1.0.2k-12.109.amzn1 will be an update ---> Package rpcbind.x86_64 0:0.2.0-13.9.amzn1 will be updated ---> Package rpcbind.x86_64 0:0.2.0-13.10.amzn1 will be an update ---> Package wget.x86_64 0:1.18-3.28.amzn1 will be updated ---> Package wget.x86_64 0:1.18-4.29.amzn1 will be an update --> Finished Dependency Resolution  Dependencies Resolved  ========================================================================================================================================================================  Package                                  Arch                            Version                                           Repository                             Size ======================================================================================================================================================================== Installing:  kernel                                   x86_64                          4.14.51-60.38.amzn1                               amzn-updates                           21 M Updating:  cloud-init                               noarch                          0.7.6-2.16.amzn1                                  amzn-updates                          422 k  dhclient                                 x86_64                          12:4.1.1-53.P1.28.amzn1                           amzn-updates                          346 k  dhcp-common                              x86_64                          12:4.1.1-53.P1.28.amzn1                           amzn-updates                          149 k  gnupg2                                   x86_64                          2.0.28-2.31.amzn1                                 amzn-updates                          2.6 M  kernel-tools                             x86_64                          4.14.51-60.38.amzn1                               amzn-updates                          124 k  ntp                                      x86_64                          4.2.8p11-2.38.amzn1                               amzn-updates                          1.0 M  ntpdate                                  x86_64                          4.2.8p11-2.38.amzn1                               amzn-updates                           88 k  openssh                                  x86_64                          7.4p1-16.69.amzn1                                 amzn-updates                          639 k  openssh-clients                          x86_64                          7.4p1-16.69.amzn1                                 amzn-updates                          1.1 M  openssh-server                           x86_64                          7.4p1-16.69.amzn1                                 amzn-updates                          511 k  openssl                                  x86_64                          1:1.0.2k-12.109.amzn1                             amzn-updates                          1.8 M  rpcbind                                  x86_64                          0.2.0-13.10.amzn1                                 amzn-updates                           56 k  wget                                     x86_64                          1.18-4.29.amzn1                                   amzn-updates                          981 k  Transaction Summary ======================================================================================================================================================================== Install   1 Package Upgrade  13 Packages  Total download size: 31 M Is this ok [y/d/N]: y  
 

3. Use Python Pexpect module to do SSH/FTP connection

[[email protected] ~]$ wget http://pexpect.sourceforge.net/pexpect-2.3.tar.gz --2018-06-21 15:38:31--  http://pexpect.sourceforge.net/pexpect-2.3.tar.gz Resolving pexpect.sourceforge.net (pexpect.sourceforge.net)... 216.105.38.10 Connecting to pexpect.sourceforge.net (pexpect.sourceforge.net)|216.105.38.10|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 150868 (147K) [application/x-gzip] Saving to: ‘pexpect-2.3.tar.gz’  pexpect-2.3.tar.gz          100%[========================================>] 147.33K   680KB/s    in 0.2s  2018-06-21 15:38:31 (680 KB/s) - ‘pexpect-2.3.tar.gz’ saved [150868/150868]  [[email protected] ~]$ tar xzf pexpect-2.3.tar.gz [[email protected] ~]$ cd pexpect-2.3 [[email protected] pexpect-2.3]$ sudo python ./setup.py install running install running build running build_py creating build creating build/lib copying pexpect.py -> build/lib copying pxssh.py -> build/lib copying fdpexpect.py -> build/lib copying FSM.py -> build/lib copying screen.py -> build/lib copying ANSI.py -> build/lib running install_lib copying build/lib/FSM.py -> /usr/local/lib/python2.7/site-packages copying build/lib/fdpexpect.py -> /usr/local/lib/python2.7/site-packages copying build/lib/pexpect.py -> /usr/local/lib/python2.7/site-packages copying build/lib/ANSI.py -> /usr/local/lib/python2.7/site-packages copying build/lib/pxssh.py -> /usr/local/lib/python2.7/site-packages copying build/lib/screen.py -> /usr/local/lib/python2.7/site-packages byte-compiling /usr/local/lib/python2.7/site-packages/FSM.py to FSM.pyc byte-compiling /usr/local/lib/python2.7/site-packages/fdpexpect.py to fdpexpect.pyc byte-compiling /usr/local/lib/python2.7/site-packages/pexpect.py to pexpect.pyc byte-compiling /usr/local/lib/python2.7/site-packages/ANSI.py to ANSI.pyc byte-compiling /usr/local/lib/python2.7/site-packages/pxssh.py to pxssh.pyc byte-compiling /usr/local/lib/python2.7/site-packages/screen.py to screen.pyc running install_egg_info Writing /usr/local/lib/python2.7/site-packages/pexpect-2.3.egg-info
 
 [[email protected] pexpect-2.3]$ sudo yum install pexpect.noarch Loaded plugins: priorities, update-motd, upgrade-helper amzn-main                                                                             | 2.1 kB  00:00:00 amzn-updates                                                                          | 2.5 kB  00:00:00 No package pexpect.noarch available. Error: Nothing to do [[email protected] pexpect-2.3]$ sudo apt-get install python-pexpect sudo: apt-get: command not found [[email protected] pexpect-2.3]$ python Python 2.7.14 (default, May  2 2018, 18:31:34) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pexpect   

4. Python Script to Execute Cisco Commands on Cisco IOS devices

C:\Python27>type cisco.py 
import paramiko from getpass import getpass import time import datetime import sys  ip = raw_input("Please enter your IP address: ") username = "admin" password = "[email protected]"  f = open('NewdayTest.txt', 'a') old_stdout = sys.stdout sys.stdout = f remote_conn_pre=paramiko.SSHClient() remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy()) remote_conn_pre.connect(ip, port=22, username=username,                           password=password,                         look_for_keys=False, allow_agent=False)  remote_conn = remote_conn_pre.invoke_shell() output = remote_conn.recv(65535) print('\n\n\n##############################################################\n') print (datetime.datetime.now()) print('\n##############################################################\n') print (output)  remote_conn.send("config t\n") time.sleep(.5) output = remote_conn.recv(65535) print (output)  remote_conn.send("file prompt quiet\n") time.sleep(.5) output = remote_conn.recv(65535) print (output)  remote_conn.send("end\n") time.sleep(.5) output = remote_conn.recv(65535) print (output)  remote_conn.send("copy running-config tftp://192.168.2.5/\n") time.sleep(2) stdout = remote_conn.recv(65535) print (stdout)  remote_conn.send("config t\n") time.sleep(.5) output = remote_conn.recv(65535) print (output)  remote_conn.send("file prompt alert\n") time.sleep(.5) output = remote_conn.recv(65535) print (output)  remote_conn.send("exit\n") time.sleep(.5) output = remote_conn.recv(65535) print (output)  f.close()
 
C:\Python27>python cisco.py
C:\Python27>type Newdaytest.txt


##############################################################
2018-08-24 12:38:42.178000
##############################################################

****************************************************************
* This is a private computing facility. *
* Unauthorized use of this device is strictly prohibited. *
* Violators will be prosecuted to the maximum extent possible. *
* *
* TACACS+ Authentication and Accounting are in place. *
* All actions/commands are monitored and recorded. *
* By using the network you expressly consent to such *
* monitoring and recording. *
****************************************************************

SW-FW-MGMT1#config t
Enter configuration commands, one per line. End with CNTL/Z.
SW-FW-MGMT1(config)#
file prompt quiet
SW-FW-MGMT1(config)#
end
SW-FW-MGMT1#
copy running-config tftp://192.168.154.5/
.
.
.


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!