文档章节

shell及python脚本方式登录服务器

yangjianzhou
 yangjianzhou
发布于 07/20 22:39
字数 345
阅读 12
收藏 4

一、问题

在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn、send、interact等命令。

二、实现

1、shell方式

#!/usr/bin/expect -f
set timeout 1
spawn ssh -A iwill@192.168.0.101
expect "Password:"
send "123456\r"
interact

2、python方式

#! /usr/bin/python

import sys
import pexpect

def servers_name():
   servers = ['sample_app_one','sample_app_two']
   return servers

def sample_app_one_ips():
    tcs_ips = ['192.168.0.101','192.168.0.102']
    return tcs_ips

def sample_app_two_ips():
    bsn_ips = ['192.168.0.101','192.168.0.102']
    return bsn_ips

def connect_server(ip):
    cmd="ssh root@{}".format(ip)
    child = pexpect.spawn(cmd)
    child.expect ('password:')     
    child.sendline('123456')
    child.interact()

def main():
 print "server list show below : "
 servers=servers_name()
 index = 0
 for server in servers:
    index = index + 1
    print '%d : %s'%(index,server)
 show_msg='please select server(1...%d) : '%index
 server_index = input(show_msg)
 server_name=servers[server_index-1]
 print 'the %s ips are below : '%server_name
 server_ips_cmd= 'ips=%s_ips()'%server_name
 exec(server_ips_cmd)
 #print server_ips_cmd
 #ips=tcs_dubbo_ips()
 index = 0
 for ip in ips :
     index = index +1
     print '%d : %s'%(index,ip)
 show_msg='please select ip(i...%d) : '%index
 ip_index = input(show_msg)
 ip=ips[ip_index-1]
 connect_server(ip)

if __name__=="__main__":
   main()

三、扩展

写这些脚本,可以锻炼自己的脚本能力。

 

© 著作权归作者所有

共有 人打赏支持
yangjianzhou
粉丝 5
博文 7
码字总数 8102
作品 0
闵行
程序员
shell与python判断文件是否存在

  日常运维中,我们会存在每日备份的现象,针对这一种情况可能会要求监控文件是否存在。比较笨拙的方法就是登录上服务器到某个路径下查看文件是否存在,除此之外,我们可以利用shell或者p...

南部小城y
08/06
0
0
1. 文本处理加速(利用多核优势进行文本的并列处理)

人生苦短,我用Python!然后学学使用Shell。 任务要求 在写爬虫或是做文本数据清洗的时候,有的时候发现我们用python写的处理程序会遇到速度过慢的问题,造成这个的原因可能如下: Python 自...

北静王
08/13
0
0
[雪峰磁针石博客]python3快速入门教程11命令行自动化工具与pexpect

[雪峰磁针石博客]python3快速入门教程 命令行自动化与pexpect 简介 Pexpect 是一个用来启动交互式命令行子程序并对其进行自动控制的 Python 工具模块。 Pexpect 可以用来和像 ssh、ftp、pas...

Python测试开发人工智能
07/25
0
0
巧用 SecureCRT 实现复杂的 ssh 登录过程自动化

以前公司的服务器都是在 SecureCRT 里直接 ssh 连接,但是最近公司处于安全审计考虑,在所有服务器前加了一层堡垒机,而且密码采用 kerberos 集中授权认证。这样问题就来了,虽然安全审计的目...

大数据之路
2015/12/31
0
0
websocket shell

Websocket Shell ======================= web目录可以部署在任意的http服务器上,打开页面的浏览器需要跟server.py运行服务器在一个内网,因为他们需要建立socket链接 客户端的JavaScript通...

逐浪人
2015/07/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

HTTPS is easy

HTTPS is easy https://www.troyhunt.com/https-is-easy/ HTTPS is easy! In fact, it's so easy I decided to create 4 short videos around 5 minutes each to show people how to enable ......

openthings
29分钟前
0
0
bugList 2

用户端: 1. 上传文件时,当选择:彩色-A3-双面时,第二个图片有bug 应改为 和第一个图片的类型相同 2. 确认打印时,三个下拉选目前有bug 应改为:根据后台配置的商家,group by计算出不同城...

勇恒
32分钟前
2
0
keras cnn 网咯 mnist 分类

搭建貌似比tf是简单很多。。。。。 from keras.datasets import mnistfrom keras.utils import np_utilsfrom keras.models import Sequentialfrom keras.layers import Dense, Activat......

阿豪boy
34分钟前
0
0
解决 /var/run/nginx.pid failed

nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory) sudo nginx -c /etc/nginx/nginx.conf nginx -s reload...

驛路梨花醉美
36分钟前
0
0
nginx负载均衡-ssl原理-生成ssl密钥对-nginx配置ssl

nginx负载均衡: 1.创建配置文件 vim /usr/local/nginx/conf/vhost/load.conf #添加以下内容: upstream qq_com #名字自定义,借助此模块定义多个IP,后面...

ZHENG-JY
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部