免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: expert1
打印 上一主题 下一主题

请教:Python能否实现服务器集中管理功能? [复制链接]

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
11 [报告]
发表于 2010-04-08 18:00 |只看该作者
呵呵,我还不太了解py,所以想到用Py调用shell脚本,如果py可以完成的话那更好了。

PS:您说的RSA密钥什么的,是不是相当于SSH认证?如果这样,服务器很多的时候,一个个来回做,特别麻烦啊!能否把用户,密码存到一个文件里然后读取呢?

多谢了!

论坛徽章:
0
12 [报告]
发表于 2010-04-08 18:13 |只看该作者
您说的RSA密钥什么的,是不是相当于SSH认证?如果这样,服务器很多的时候,一个个来回做,特别麻烦啊!


不用的 不麻烦啊 简单点说 就是在一台管理控制台服务器上运行ssh-keygen -t dsa 生成id_dsa.pub 写进authorized_keys 然后将这个文件分发到各个服务器上 就可以了这样你有几千台服务器管理器上也很方便 网上有这个教程的 你那样用户密码都拷到文件里读效率也不高 参考 http://bbs.chinaunix.net/viewthr ... ;page=4#pid12005338 这篇帖子35楼就可以

至于PY可以完成很多事情 基本你需要的都可以做到 你可以参考下精华里别人写的系统管理工具 还有一本书推荐你看看 python for UNIX and LINUX system Administration

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
13 [报告]
发表于 2010-04-09 09:34 |只看该作者
谢谢了!{:3_182:}

论坛徽章:
2
拜羊年徽章
日期:2015-03-03 16:15:4315-16赛季CBA联赛之同曦
日期:2018-07-25 19:57:32
14 [报告]
发表于 2010-04-09 10:49 |只看该作者
用PSSH试试,人家已经开发好了的,很有用的

论坛徽章:
1
水瓶座
日期:2013-11-04 13:16:13
15 [报告]
发表于 2010-04-09 13:49 |只看该作者
如果不用python 可以考虑puppet

论坛徽章:
0
16 [报告]
发表于 2010-04-12 15:05 |只看该作者
又自己造轮子不太好吧
fedora有个开源项目func用python开发的
足够完成服务器集中管理功能

论坛徽章:
0
17 [报告]
发表于 2010-04-12 17:46 |只看该作者
关注楼主的进度

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2010-04-12 20:47 |只看该作者
本帖最后由 phpcool 于 2010-04-12 20:49 编辑

http://bbs.chinaunix.net/thread-1675682-1-4.html
服务器端是基于func,扩展非常方便,没有必要再从0开始。

论坛徽章:
0
19 [报告]
发表于 2010-04-13 16:02 |只看该作者
本帖最后由 ccne 于 2010-04-13 16:19 编辑

python方法:
用我原来的改的,可能有问题,没测试!俺Q

ad.sh

  1. #!/bin/bash
  2. USER=zsf
  3. PASS=123456
  4. FILE=$1
  5. while read ip
  6. do
  7.         pass=$PASS`echo $ip|awk -F'.' '{print $4}'`
  8.         echo -e "\n==============================================="
  9.         echo -e "\tRunning $ip ..."
  10.         echo -e "===============================================\n"
  11.         python exec.py "$ip" "$USER" "$pass" "$FILE"
  12. done < ip.txt
复制代码
exec.py

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import paramiko
  4. import time
  5. import re
  6. import getpass
  7. import sys
  8. IP=sys.argv[1]
  9. PORT=22
  10. USER=sys.argv[2]
  11. PASS=sys.argv[3]
  12. FILE=sys.argv[4]

  13. t=paramiko.Transport((IP,PORT))
  14. t.connect(username=USER,password=PASS)
  15. chan=t.open_session()
  16. chan.get_pty()
  17. chan.invoke_shell()
  18. chan.send('sudo su - \n')
  19. time.sleep(1)
  20. chan.send(PASS+'\n')
  21. chan.send("scp -r 你自己的IP:$FILE /tmp/test\n")
  22. time.sleep(0.5)
  23. chan.send("yes\n")
  24. time.sleep(0.5)
  25. chan.send("你本机的密码\n")
  26. time.sleep(0.5) //根据你CP文件的大小来改时间
  27. print chan.recv(14096)
  28. chan.send("chmo a+x /tmp/test;/tmp/test\n")
  29. time.sleep(0.5)
  30. print chan.recv(4096)
  31. chan.close()
  32. t.close()
复制代码
ip.txt

  1. 192.168.0.13
复制代码
自动KEY方法:
主要是在安装系统的时候没有把KEY做进去,一台一台的做又麻烦。
如果每台机器用户密码不一样,自己可以简单的修改一下。
我是在我原来的基础上改的,没测试!

  1. #!/bin/sh
  2. ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""
  3. for ip in `awk '{print $1}' ip.txt`
  4. do
  5.         
  6.         expect scp.exp $ip

  7. done
复制代码
scp.exp

  1. [code]
  2. #!/usr/bin/expect -f
  3. set ip [lindex $argv 0]
  4. log_file log/$ip.log
  5. spawn scp -r /home/zsf/.ssh/id_dsa.pub zsf@192.168.0.$ip:~/.ssh/authorized_keys
  6. set timeout 10
  7. expect {
  8. "yes/no" { send "yes\r";exp_continue }
  9. "password:" { send "123456\r" }
  10. }
  11. interact
复制代码

论坛徽章:
0
20 [报告]
发表于 2010-04-13 23:42 |只看该作者
这样的需求 还用Python啊! 那shell 干什么吃的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP