设为首页 收藏本站
查看: 5123|回复: 6

通过shell、python脚本管理kvm 虚拟机

[复制链接]

尚未签到

发表于 2013-3-6 09:50:06 | 显示全部楼层 |阅读模式
一个想法:
1 python2.7
2 python的web框架 bottle
3 shell脚本管理kvm
组合在一起就可以了~  

这段时间我会用bottle 简单的实现管理kvm 主机,开源出去的~ 性能烂的话,别怪我~

    管理kvm主机完全可以在页面上完成,国外有个人用django写了这套程序,感觉还不错,只是稍复杂,bug有点多。。。。  个人觉得 自己开写一套简单的,python本身有kvm的库,大家要是觉得麻烦的话,也可以用os模块,调用virsh的命令来管理kvm主机,这完全是可行的~

https://www.webvirtmgr.net/docs/

上面是安装配置的教程

安装好需要的库之后,直接运行就好了

./manage.py runserver 10.96.60.61:8000



153227962.jpg 153238608.jpg 150301888.jpg


也可以利用这个小脚本,针对虚拟机开机,关机,重启~


用法:

  • [Shell] 纯文本查看 复制代码
    查看虚拟机列表~
    # kvmctl.sh --list 
     machine1 
     machine2 
     machineN 
    开启虚拟机
     # kvmctl.sh machine2 startd 
     Starting up 'machine2' ... (daemon mode) 
    虚拟机状态
     # kvmctl.sh --show 
     MACHINE             PID     STIME   TIME 
     machine1            4856    Feb11   10:34:59 
     machine2            11155   Mar12   00:05:45 
    关闭虚拟机
     # kvmctl.sh machine1 stop 
     Shutting down 'machine1' ...



Config file example:
  KVM_M=1G
  KVM_HDA=$BASEDIR/$MACHINE/root.qcow2
  KVM_HDB=$BASEDIR/$MACHINE/swap.qcow2
  KVM_HDC=$BASEDIR/.imgs/mysql.raw
  KVM_HDD=$BASEDIR/.imgs/tmp.qcow2
  KVM_NET="nic,macaddr=52:54:00:00:02:52 -net tap"
  KVM_PIDFILE=/var/run/192.168.0.249.pid
  KVM_TCP_PORT=10000
  KVM_MONITOR="tcp:127.0.0.1:${KVM_TCP_PORT},server,nowait"
  KVM_EXTRA=




  • [Shell] 纯文本查看 复制代码
    #!/bin/bash 
    BASEDIR="/var/local/kvm" 
    KVM="/usr/bin/kvm" 
    KVM_CONFIG="settings.cfg" 
     
    do_help() 
    { 
        PROGRAM_NAME=`basename $0` 
        echo "Usage:" 
        echo "$PROGRAM_NAME machine (start|startd|stop|monitor|status|settings|edit)" 
        echo "$PROGRAM_NAME (--help|--list|--show)" 
    } 
     
    if [ $# -eq 0 ]; then 
        do_help 
        exit 1 
    fi 
     
    if [ "$1" == "--help" ]; then 
        do_help 
        exit 0 
    fi 
     
    if [ "$1" == "--list" ]; then 
        ls -1 $BASEDIR 
        exit 0 
    fi 
     
    if [ "$1" == "--show" ]; then 
        ps -ef | awk -v format="%-19s %-7s %-7s %s\n" '\ 
            BEGIN { \ 
                printf(format,"MACHINE", "PID", "STIME", "TIME") \ 
            } \ 
            /kvm -name/&&!/awk/ { \ 
                printf(format, $10, $2, $5, $7) \ 
            }' 
        exit 0 
    fi 
     
    MACHINE=$1 
    MACHINEDIR=$BASEDIR/$MACHINE 
     
    if [ ! -d $MACHINEDIR ]; then 
        echo -e "Error. (Machine not found at $BASEDIR/)\n" 
        do_help 
        exit 1 
    fi 
     
    do_load_settings() 
    { 
        if [ -f "$MACHINEDIR/$KVM_CONFIG" ]; then 
            source $MACHINEDIR/$KVM_CONFIG 
        else 
            echo -e "Error. ($MACHINEDIR/$KVM_CONFIG not found)\n" 
     
            echo "Example $KVM_CONFIG:" 
            echo 'KVM_M=512M' 
            echo 'KVM_HDA=$BASEDIR/$MACHINE/root.qcow2' 
            echo 'KVM_HDB=$BASEDIR/.imgs/swap.qcow2' 
            echo 'KVM_HDC=$BASEDIR/.imgs/home.qcow2' 
            echo 'KVM_HDD=' 
            echo 'KVM_NET="nic,macaddr=52:54:00:00:02:53 -net tap"' 
            echo 'KVM_TCP_PORT=10001' 
            echo 'KVM_PIDFILE=/var/run/192.168.0.253.pid' 
            echo 'KVM_MONITOR="tcp:127.0.0.1:${KVM_TCP_PORT},server,nowait"' 
            echo 'KVM_EXTRA=' 
     
            exit 1 
        fi 
    } 
     
    do_check_tcp_port() 
    { 
        if [ -z "$1" ]; then 
            echo "Error. (KVM_TCP_PORT is not set)" 
            exit 1 
        fi 
    } 
     
    case "$2" in  
     
        start|startd) 
     
            do_load_settings 
     
            PARAMS="-name $MACHINE" 
     
            [ "$2" == "startd" ] \ 
                && PARAMS="$PARAMS -vnc none -daemonize" \ 
                && MSG="(daemon mode)" 
     
            [ -n "$KVM_M" ] && PARAMS="$PARAMS -m $KVM_M" 
            [ -n "$KVM_HDA" ] && PARAMS="$PARAMS -hda $KVM_HDA" 
            [ -n "$KVM_HDB" ] && PARAMS="$PARAMS -hdb $KVM_HDB" 
            [ -n "$KVM_HDC" ] && PARAMS="$PARAMS -hdc $KVM_HDC" 
            [ -n "$KVM_HDD" ] && PARAMS="$PARAMS -hdd $KVM_HDD" 
            [ -n "$KVM_NET" ] && PARAMS="$PARAMS -net $KVM_NET" 
            [ -n "$KVM_PIDFILE" ] && PARAMS="$PARAMS -pidfile $KVM_PIDFILE" 
            [ -n "$KVM_MONITOR" ] && PARAMS="$PARAMS -monitor $KVM_MONITOR" 
     
            [ -n "$KVM_EXTRA" ] && PARAMS="$PARAMS $KVM_EXTRA" 
     
            echo "Starting up '$MACHINE' ... $MSG" 
            $KVM $PARAMS 
     
            [ $? -ne 0 ] \ 
                && echo "Error. (Couldn't run KVM)" 
            ;; 
     
        stop) 
     
            do_load_settings 
            do_check_tcp_port $KVM_TCP_PORT 
     
            echo "Shutting down '$MACHINE' ..." 
            echo "system_powerdown" | nc 127.0.0.1 $KVM_TCP_PORT &>/dev/null 
     
            if [ $? -ne 0 ]; then 
                echo "Error. (Couldn't connect. Is the machine up?)" 
                exit 1 
            fi 
     
            ;; 
     
        monitor) 
     
            do_load_settings 
            do_check_tcp_port $KVM_TCP_PORT 
     
            echo "Starting Monitor for '$MACHINE'... (Ctrl+C to exit)" 
            nc 127.0.0.1 $KVM_TCP_PORT 
     
            ;; 
     
        status) 
     
            do_load_settings 
            do_check_tcp_port $KVM_TCP_PORT 
     
            INFO="info status\ninfo kvm\ninfo network" 
     
            echo -e $INFO | nc -w 1 127.0.0.1 $KVM_TCP_PORT \ 
                && echo "" 
     
            if [ $? -ne 0 ]; then 
                echo "Error. (Couldn't connect. Is the machine up?)" 
                exit 1 
            fi 
     
            ;; 
     
        settings) 
     
            do_load_settings 
            cat $MACHINEDIR/$KVM_CONFIG 
     
            ;; 
     
        edit) 
     
            if [ -z "$EDITOR" ]; then 
                echo "Error. (EDITOR is not set)" 
                exit 1 
            fi 
     
            do_load_settings 
     
            if [ -n "$KVM_PIDFILE" -a -f "$KVM_PIDFILE" ]; then 
                echo -n "Warning! '$MACHINE' is running. Continue? (y/N) " 
                read CONTINUE 
     
                [ "$CONTINUE" != "y" -a "$CONTINUE" != "Y" ] \ 
                    && exit 1 
     
            fi 
     
            $EDITOR $MACHINEDIR/$KVM_CONFIG 
     
            ;; 
     
        *) 
            do_help 
            exit 1 
            ;; 
     
    esac 
     
    exit 0 





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-3533-1-1.html 上篇帖子: PowerShell 自动备份hyper-v下的虚拟机 下篇帖子: shell函数显式的返回值 kvm python 虚拟机

尚未签到

发表于 2013-3-18 22:07:24 | 显示全部楼层
睡眠是一门艺术——谁也无法阻挡我追求艺术的脚步!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-17 09:52:53 | 显示全部楼层
人生重要的不是所站的位置,而是所朝的方向!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-20 16:25:17 | 显示全部楼层
写的真的很不错

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-24 15:30:14 | 显示全部楼层
女,喜甜食,甚胖!该女有一癖好:痛恨蚂蚁,见必杀之。问其故曰:这小东西,那么爱吃甜食,腰还那么细!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-31 08:58:07 | 显示全部楼层
走自己的路,让别人打车去吧。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

发表于 2013-6-5 12:24:19 | 显示全部楼层
谢谢楼主,共同发展

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表