⑴ 如何python3.4使用pexpect来实现SSH登陆
Pexpect 是 Don Libes 的 Expect 语言的一个 Python
实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect
的使用范围很广,可以用来实现与 ssh、ftp 、telnet
等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。
在shell里面用过pexpect的人,相信都会很熟悉这种工具,pexpect是expect的python的一个实现,利用python来操作某些交互式的自动化任务是非常方便的。
如何在linux下安装?
1,使用wget https://pypi.python.org/pypi?:action=show_md5&digest= 下载
2,使用tar -zxvf pexpect-3.3.tar.gz解压
3,使用python setup.py install进行安装
ok,上面的步骤,执行完成之后,我们就可以来写个demo测试一下了,另外注意兼容问题,散仙的python是3.4,所以要下载支持python3.4的pexpect,如果你的python版本是2.x那么就要下载2.x的pexpect来使用。
下面是散仙模拟SSH登陆一台机器并打印磁盘情况,然后退出的例子:
#!/usr/local/python3.4/bin/python3.4
import pexpect
ip="192.168.46.22"
name="root"
pwd="abc"
#发送命令执行交互
child=pexpect.spawn('ssh %s@%s' % ("root",ip) )
#
child.expect ('password:')
child.sendline(pwd)
child.expect('$')
child.sendline('df -h')
#发送命令
child.sendline("exit")
child.interact()
#关闭pexpect
child.close()
执行结果如下:
Last login: Wed Oct 22 18:35:08 2014 from 192.168.46.31
exit[root@ganglia ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_ganglia-lv_root 30G 3.6G 25G 13% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 485M 32M 428M 7% /boot
[root@ganglia ~]# exit
logout
Connection to 192.168.46.22 closed.
[root@master 2012]#
本文只是一个简单的例子,可能觉得没有必要使用python来完成,但当系统管理规模一旦大起来的话,使用python来自动化管理是非常轻松的一件事。
⑵ 树莓派实现ssh动态密码登录
为增强树莓派系统安全性,手动编写python脚本实现SSH动态密码登录,适用于raspberrypi os(基于Debian GNU/Linux 12)。
在运行前,请确保安装所需库,如遇pip错误,请在虚拟环境中安装。同时,需在发件邮箱开启smtp服务。
简易版代码运行后,显示动态密码登录SSH效果良好。动态密码通过邮件发送,确保安全性。
为防止密码泄露,动态密码在发信端进行AES加密。树莓派(发信端)的passwdcg.py脚本加密密码。解密代码存于电脑,将邮件中的加密密码(不带单引号)复制至此,即可解密为8位数字,用于SSH登录。
实现定时发送密码,使用crontab工具。编写passwd.sh脚本,修改路径后,使用crontab -e添加定时任务,确保每10分钟收到一封动态密码邮件,通过解密代码解密使用。
为提升安全性,建议定期更换AES加密的密钥和向量,或尝试其他加密方式。在ssh.conf文件中设置仅允许动态密码登录,进一步增强安全性。
⑶ Pycharm使用SSH连接远程服务器
很多开发者在内网环境中工作时,常常需要远程连接到公司服务器进行代码调试,但基于安全和资源隔离的考量,通常无法直接访问公网进行更新和安装所需软件。本文将详细指导如何使用SSH连接远程服务器,并在本地开发环境中实现高效调试。
首先,构建容器环境以隔离不同项目间的依赖冲突。在内网环境下,使用Docker容器提供安全且独立的开发空间。需创建一个Docker容器并安装必要的软件,如SSH和VIM。
确保内网服务器的网络配置允许SSH连接。在服务器上备份原sources.list,然后添加自定义源地址以更新APT源。执行源更新操作后,安装SSH及VIM,接着配置SSH服务,允许root用户通过密码验证登录,并设置合适的密码。最后,启动SSH服务。
对于使用PyCharm进行开发的开发者,需要在本地配置远程服务器连接。在PyCharm中添加远程服务器链接,选择SFTP连接方式,并输入服务器IP、用户名(通常为root)和SSH端口号(通常映射为22或指定端口)。在配置SSH连接时,确保使用正确的密码进行验证。
接着,配置Python解释器和文件路径映射。在PyCharm中设置Python Interpreter,并选择SSH连接。添加服务器配置,确保Python解释器路径正确。设置文件同步,使本地和远程服务器的项目文件保持一致,同时开启自动上传项目文件到服务器的功能。
对于查看Python安装路径,只需在Python解释器环境中导入sys模块,执行sys.executable命令即可获取Python安装路径。
在CentOS7系统中配置远程服务器SSH连接时,首先需创建包含“--privileged=true”参数的Docker容器以确保SSH服务能正常启动。检查是否已安装openssh-server(通常会默认安装),如果没有,可更新源后进行安装。修改sshd_config文件,取消注释以允许远程访问,并配置密码验证。最后,启动SSH服务并设置开机自启动。
通过上述步骤,内网开发人员能够在本地实现与远程服务器的高效连接与调试,优化代码开发流程,提升工作效率。