Esempio n. 1
0
def OpenRoot():
    if 0 != os.system("passwd root"):
        return "Failed to change password of root"
    #修改第一个文件项
    szConfig, szErr = maker_public.readTxtFile(
        "/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf")
    if 0 < len(szErr):
        return szErr
    if None==re.search("\n[ \\t]*greeter-show-manual-login[ \\t]*=[ \\t]*.+", szConfig) and \
        None==re.search("^[ \\t]*greeter-show-manual-login[ \\t]*=[ \\t]*.+", szConfig):
        szConfig += "\ngreeter-show-manual-login=true"
    if None==re.search("\n[ \\t]*all-guest[ \\t]*=[ \\t]*.+", szConfig) and \
        None==re.search("^[ \\t]*all-guest[ \\t]*=[ \\t]*.+", szConfig):
        szConfig += "\nall-guest=false"
    szErr = maker_public.writeTxtFile(
        "/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf", szConfig)
    if 0 < len(szErr):
        return szErr
    #修改第二个文件项
    szConfig, szErr = maker_public.readTxtFile("/etc/pam.d/gdm-autologin")
    if 0 < len(szErr):
        return szErr
    szConfig = re.sub("\n[ \\t]*auth[ \\t]+required[ \\t]+pam_succeed_if.so[ \\t]+user[ \\t]+!=[ \\t]+root[ \\t]+quiet_success", \
        "\n#auth required pam_succeed_if.so user != root quiet_success", szConfig)
    szConfig = re.sub("^[ \\t]*auth[ \\t]+required[ \\t]+pam_succeed_if.so[ \\t]+user[ \\t]+!=[ \\t]+root[ \\t]+quiet_success", \
        "#auth required pam_succeed_if.so user != root quiet_success", szConfig)
    szErr = maker_public.writeTxtFile("/etc/pam.d/gdm-password", szConfig)
    if 0 < len(szErr):
        return szErr
    #修改第三个文件
    szConfig, szErr = maker_public.readTxtFile("/etc/pam.d/gdm-password")
    if 0 < len(szErr):
        return szErr
    szConfig = re.sub("\n[ \\t]*auth[ \\t]+required[ \\t]+pam_succeed_if.so[ \\t]+user[ \\t]+!=[ \\t]+root[ \\t]+quiet_success", \
        "\n#auth required pam_succeed_if.so user != root quiet_success", szConfig)
    szConfig = re.sub("^[ \\t]*auth[ \\t]+required[ \\t]+pam_succeed_if.so[ \\t]+user[ \\t]+!=[ \\t]+root[ \\t]+quiet_success", \
        "#auth required pam_succeed_if.so user != root quiet_success", szConfig)
    szErr = maker_public.writeTxtFile("/etc/pam.d/gdm-password", szConfig)
    if 0 < len(szErr):
        return szErr
    #修改第四个文件
    szConfig, szErr = maker_public.readTxtFile("/root/.profile")
    if 0 < len(szErr):
        return szErr
    if None==re.search("\n[ \\t]*tty[ \\t]+-s[ \\t]*&&[ \\t]*mesg[ \\t]+n[ \\t]+\\|\\|[ \\t]+.+", szConfig) and \
        None==re.search("^[ \\t]*tty[ \\t]+-s[ \\t]*&&[ \\t]*mesg[ \\t]+n[ \\t]+\\|\\|[ \\t]+.+", szConfig):
        szConfig = re.sub("\n[ \\t]*mesg[ \\t]+n[ \\t]+\\|\\|[ \\t]+.+",
                          "\ntty -s&&mesg n || true", szConfig)
        szConfig = re.sub("^[ \\t]*mesg[ \\t]+n[ \\t]+\\|\\|[ \\t]+.+",
                          "\ntty -s&&mesg n || true", szConfig)

    szErr = maker_public.writeTxtFile("/root/.profile", szConfig)
    if 0 < len(szErr):
        return szErr
    #
    return ""
Esempio n. 2
0
def ConfigRepo():
    #安装epel扩展库
    szErr = installOrUpdateRpm("epel-release", "noarch", "")
    if 0 < len(szErr):
        return szErr
    #安装WANGdisco
    os.system("rm -f /tmp/vscode_tmp")
    os.system("rpm -q centos-release >> /tmp/vscode_tmp")
    szCentOSVer, _ = maker_public.readTxtFile("/tmp/vscode_tmp")
    MatchList = re.match("^centos\\-release\\-([\\d]+)\\-[\\d]+\\.[\\d]+"+\
        "\\.[\\d]+\\.[^\\.]+\\.centos\\.[^\\.^\\s]+$", szCentOSVer)
    if None == MatchList:
        return ("Unknow OS:%s" % szCentOSVer)
    szRpmPath = ("http://opensource.wandisco.com/centos/%s"\
        "/git/x86_64/wandisco-git-release-%s-2.noarch.rpm" %(MatchList.group(1),MatchList.group(1)))
    szErr = installOrUpdateRpm("wandisco-git-release", "noarch", szRpmPath)
    if 0 >= len(szErr):
        return ""
    szRpmPath = ("http://opensource.wandisco.com/centos/%s"\
        "/git/x86_64/wandisco-git-release-%s-1.noarch.rpm" %(MatchList.group(1),MatchList.group(1)))
    szErr = installOrUpdateRpm("wandisco-git-release", "noarch", szRpmPath)
    if 0 < len(szErr):
        return szErr
    #
    return ""
Esempio n. 3
0
def installOrUpdateRpm(szRpmName, szMacVer, szRpmPath):
    #获取RPM包的安装信息
    os.system("rm -f /tmp/vscode_tmp")
    os.system("yum list installed | grep -E \"" + szRpmName + "\\." +
              szMacVer + "\" >> /tmp/vscode_tmp")
    szRpmInfo, _ = maker_public.readTxtFile("/tmp/vscode_tmp")
    szRpmInfoArr = szRpmInfo.split("\n")
    InstalledMatchList = None
    for szCurRpm in szRpmInfoArr:
        InstalledMatchList = re.match("^"+szRpmName+"\\."+szMacVer+\
            "[\\s]{1,}([^\\s]{1,})[\\s]{1,}[^\\s]{1,}", szCurRpm)
        if None != InstalledMatchList:
            break
    os.system("rm -f /tmp/vscode_tmp")
    #如果没有安装则进行安装,否则就进行升级
    if None == InstalledMatchList:
        if 0 >= len(szRpmPath):
            if 0 != os.system("yum -y install %s.%s" % (szRpmName, szMacVer)):
                return ("Failed to Install %s.%s" % (szRpmName, szMacVer))
        else:
            if 0 != os.system("yum -y install %s" % (szRpmPath)):
                return ("Install %s.%s failed" % (szRpmName, szMacVer))
    else:
        if 0 >= len(szRpmPath):
            if 0 != os.system("yum -y update %s.%s" % (szRpmName, szMacVer)):
                return ("Update %s.%s failed" % (szRpmName, szMacVer))
        else:
            if 0 != os.system("yum -y update %s" % (szRpmPath)):
                return ("Update %s.%s failed" % (szRpmName, szMacVer))
    #打印安装成功信息
    print("Install/Update %s success\n" % (szRpmName))
    #返回
    return ""
Esempio n. 4
0
def ConfigSshd():
    #安装
    if 0 != os.system("apt-get -y install openssh-server"):
        return "Install openssh-server failed"
    #读取配置文件
    szSshdConf, szErr = maker_public.readTxtFile("/etc/ssh/sshd_config")
    if 0 < len(szErr):
        return szErr
    #修正配置文件内容
    #
    szSshdConf = re.sub("\\n[ \\t]*PubkeyAuthentication.+", \
        "\nPubkeyAuthentication yes", szSshdConf)
    szSshdConf = re.sub("\\n[ \\t]*#[ \\t]*PubkeyAuthentication.+", \
        "\nPubkeyAuthentication yes", szSshdConf)
    #
    szSshdConf = re.sub("\\n[ \\t]*AllowTcpForwarding.+", \
        "\nAllowTcpForwarding yes", szSshdConf)
    szSshdConf = re.sub("\\n[ \\t]*#[ \\t]*AllowTcpForwarding.+", \
        "\nAllowTcpForwarding yes", szSshdConf)
    #
    szSshdConf = re.sub("\\n[ \\t]*AuthorizedKeysFile.+", \
        "\nAuthorizedKeysFile .ssh/authorized_keys", szSshdConf)
    szSshdConf = re.sub("\\n[ \\t]*#[ \\t]*AuthorizedKeysFile.+", \
        "\nAuthorizedKeysFile .ssh/authorized_keys", szSshdConf)
    #写入配置文件
    szErr = maker_public.writeTxtFile("/etc/ssh/sshd_config", szSshdConf)
    if 0 < len(szErr):
        return szErr
    #重启服务
    if 0 != os.system("systemctl restart sshd"):
        return "restart sshd failed"
    return ""
Esempio n. 5
0
def ConfigGolang():
    #安装 golang
    if False == os.path.exists("./go1.13.6.linux-amd64.tar.gz"):
        if 0 != os.system(
                "wget https://studygolang.com/dl/golang/go1.13.6.linux-amd64.tar.gz"
        ):
            return "Failed to download golang1.13.6"
    if -1 == maker_public.execCmdAndGetOutput(\
        "su -c \"/usr/local/go/bin/go version\"").find("go1.13.6"):
        os.system("rm -Rf /usr/local/go")
        if 0 != os.system(
                "tar -C /usr/local -zxvf ./go1.13.6.linux-amd64.tar.gz"):
            return "Failed to uncompress golang1.13.6"
        #设置环境变量
        szConfig, szErr = maker_public.readTxtFile("/etc/profile")
        if 0 < len(szErr):
            return szErr
        if None == re.search("\\nexport[ \\t]+GOPATH[ \\t]*=[ \\t]*\\/root/go",
                             szConfig):
            szConfig += "\nexport GOPATH=/root/go"
        if None == re.search(
                "\\nexport[ \\t]+PATH[ \\t]*=[ \\t]*\\$PATH:\\$GOPATH/bin:/usr/local/go/bin",
                szConfig):
            szConfig += "\nexport PATH=$PATH:$GOPATH/bin:/usr/local/go/bin"
        szErr = maker_public.writeTxtFile("/etc/profile", szConfig)
        if 0 < len(szErr):
            return szErr
    #安装工具
    szErr = maker_public.installGolangTools("/usr/local/go/bin/go")
    if 0 < len(szErr):
        return szErr
    #
    return ""
Esempio n. 6
0
def makeMakefile(szAppType, szProjPath):
    #检测
    if "app"!=szAppType and "shared"!=szAppType and "static"!=szAppType:
        return ("Invalid output(%s)" %(szAppType))
    #读取基础的makefile文件
    szMakeCont,szErr = maker_public.readTxtFile( os.path.dirname(sys.argv[0])+"/golang_maker/makefile.conf" )
    if 0 < len(szErr):
        return szErr
    #替换编译选项
    if "app" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*GOFLAGS[ \\t]*:=.*", \
            "\nGOFLAGS := -a -v -gcflags \"-N -l\" -ldflags \"-w -s\"", szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*GOFLAGS_DBG[ \\t]*:=.*", \
            "\nGOFLAGS_DBG := -v -gcflags \"-N -l\"", szMakeCont)
    elif "shared" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*GOFLAGS[ \\t]*:=.*", \
            "\nGOFLAGS := -a -v -gcflags \"-N -l\" -ldflags \"-w -s\" -buildmode=plugin", szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*GOFLAGS_DBG[ \\t]*:=.*", \
            "\nGOFLAGS_DBG := -v -gcflags \"-N -l\" -buildmode=plugin", szMakeCont)
    else:
        szMakeCont = re.sub("\\n[ \\t]*GOFLAGS[ \\t]*:=.*", \
            "\nGOFLAGS := -a -v -gcflags \"-N -l\" -ldflags \"-w -s\" -buildmode=archive", szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*GOFLAGS_DBG[ \\t]*:=.*", \
            "\nGOFLAGS_DBG := -i -v -gcflags \"-N -l\" -buildmode=archive", szMakeCont)
    #替换编译命令
    if "app" == szAppType:
        szMakeCont = re.sub("\\n\\t\\$\\(GO\\)[ \\t]*\\$\\(GOFLAGS\\)[ \\t]*\\$\\(LIBS\\).*", \
            "\n\t$(GO) $(GOFLAGS) $(LIBS) ./...;\\\n\tcp -f $(TOP_DIR)/bin/main $(TOP_DIR)/bin/"+os.path.basename(szProjPath), \
                szMakeCont)
        szMakeCont = re.sub("\\n\\t\\$\\(GO\\)[ \\t]*\\$\\(GOFLAGS_DBG\\)[ \\t]*\\$\\(LIBS\\).*", \
            "\n\t$(GO) $(GOFLAGS_DBG) $(LIBS) ./...;\\\n\tcp -f $(TOP_DIR)/bin/main $(TOP_DIR)/bin/"+os.path.basename(szProjPath), \
                szMakeCont)   
    elif "shared" == szAppType:
        szMakeCont = re.sub("\\n\\t\\$\\(GO\\)[ \\t]*\\$\\(GOFLAGS\\)[ \\t]*\\$\\(LIBS\\).*", \
            "\n\t$(GO) $(GOFLAGS) $(LIBS) main;\\\n\tcp -f $(TOP_DIR)/pkg/linux_amd64_dynlink/main.a "\
                "$(TOP_DIR)/pkg/linux_amd64_dynlink/"+os.path.basename(szProjPath)+".a", \
                szMakeCont)
        szMakeCont = re.sub("\\n\\t\\$\\(GO\\)[ \\t]*\\$\\(GOFLAGS_DBG\\)[ \\t]*\\$\\(LIBS\\).*", \
            "\n\t$(GO) $(GOFLAGS_DBG) $(LIBS) main;\\\n\tcp -f $(TOP_DIR)/pkg/linux_amd64_dynlink/main.a "\
                "$(TOP_DIR)/pkg/linux_amd64_dynlink/"+os.path.basename(szProjPath)+".a", \
                szMakeCont)
    #else:
    #替换GOPATH
    szMakeCont = re.sub("\\n[ \\t]*GOPATH[ \\t]*:=.*", ("\nGOPATH := %s:%s" %(szProjPath, os.environ["HOME"]+"/go")), szMakeCont)
    #写入makefile文件
    szErr = maker_public.writeTxtFile(szProjPath+"/makefile", szMakeCont)
    return szErr
Esempio n. 7
0
def ConfigJava():
    szCurWorkPath = os.path.dirname(os.path.realpath(sys.argv[0]))
    print(
        "First:Please download JDK for https://www.oracle.com/java/technologies/javase-downloads.html."
    )
    print("Second: Move the RPM filr to %s." % (szCurWorkPath))
    raw_input("Last: Press any key to continue...")
    #获取JDKRPM包的名称
    szJdkRpm = ""
    szJdkName = ""
    FileList = os.listdir(os.path.dirname(os.path.realpath(sys.argv[0])))
    for szCurFile in FileList:
        if None != re.search("jdk\\-.+_linux\\-x64_bin\\.rpm", szCurFile):
            szJdkRpm = str(
                os.path.dirname(os.path.realpath(sys.argv[0])) + "/" +
                szCurFile)
            szJdkName = str(re.sub("_linux\\-x64_bin\\.rpm", "", szCurFile))
            break
    if 0 >= len(szJdkRpm):
        return "Can not find any file like jdk_xx.xx.xx_linux-x64_bin.rpm"
    #安装RPM包
    szErr = installOrUpdateRpm(szJdkName, "x86_64", szJdkRpm)
    if 0 < len(szErr):
        return szErr
    #设置配置文件
    szProFileConf, szErr = maker_public.readTxtFile("/etc/profile")
    if 0 < len(szErr):
        return szErr
    if None == re.search("\\nexport[ \\t]+JAVA_HOME[ \\t]*=.+", szProFileConf):
        szProFileConf += "\n\nexport JAVA_HOME=/usr/java/" + szJdkName
    else:
        szProFileConf = re.sub("\\nexport[ \\t]+JAVA_HOME[ \\t]*=.+", \
            "\nexport JAVA_HOME=/usr/java/"+szJdkName, szProFileConf)
    szErr = maker_public.writeTxtFile("/etc/profile", szProFileConf)
    if 0 < len(szErr):
        return szErr
    #返回
    return ""
Esempio n. 8
0
def UpdateSystem():
    os.system("yum clean all")
    if 0 != os.system("yum -y update"):
        return "Update CentOS failed"
    #关闭防火墙
    os.system("systemctl stop firewalld.service")
    if 0 != os.system("systemctl disable firewalld.service"):
        return "Disable firewalld failed"
    #关闭SELINUX
    szSelinux, szErr = maker_public.readTxtFile("/etc/selinux/config")
    if 0 < len(szErr):
        return "Disable SELINUX failed"
    szSelinux = re.sub("\\n[ \\t]*SELINUX[ \\t]*=[ \\t]*.+",
                       "\nSELINUX=disabled", szSelinux)
    szErr = maker_public.writeTxtFile("/etc/selinux/config", szSelinux)
    if 0 < len(szErr):
        return "Disable SELINUX failed"
    #配置时钟同步
    os.system("systemctl enable ntpd.service")
    os.system("systemctl stop ntpd.service")
    os.system("systemctl start ntpd.service")
    os.system("systemctl status ntpd.service")
    return ""
Esempio n. 9
0
def makeMakefile(szAppType, szProjPath, szComplier, szSuffix, szStd):
    #检测
    if "app" != szAppType and "shared" != szAppType and "static" != szAppType:
        return ("Invalid output(%s)" % (szAppType))
    #读取基础的makefile文件
    szMakeCont, szErr = maker_public.readTxtFile(
        os.path.dirname(sys.argv[0]) + "/cxx_maker/makefile.conf")
    if 0 < len(szErr):
        return szErr
    #替换编译器
    szMakeCont = re.sub("\\n[ \\t]*CXX[ \\t]*:=.*",
                        ("\nCXX := %s" % (szComplier)), szMakeCont)
    #替换后缀
    szMakeCont = re.sub("\\n[ \\t]*SUFFIX[ \\t]*:=.*",
                        ("\nSUFFIX := %s" % (szSuffix)), szMakeCont)
    #替换编译选项
    if "app" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*CXXFLAGS[ \\t]*:=.*", \
            ("\nCXXFLAGS := -std=%s -Wall -m64 -O2 -fPIC -fmessage-length=0" %(szStd)), szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*CXXFLAGS_DBG[ \\t]*:=.*", \
            ("\nCXXFLAGS_DBG := -std=%s -Wall -m64 -O0 -g3 -fPIC -fmessage-length=0" %(szStd)), szMakeCont)
    elif "shared" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*CXXFLAGS[ \\t]*:=.*", \
            ("\nCXXFLAGS := -std=%s -Wall -m64 -O2 -fPIC -fmessage-length=0 -fvisibility=hidden" %(szStd)), szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*CXXFLAGS_DBG[ \\t]*:=.*", \
            ("\nCXXFLAGS_DBG := -std=%s -Wall -m64 -O0 -g3 -fPIC -fmessage-length=0 -fvisibility=hidden" %(szStd)), szMakeCont)
    else:
        szMakeCont = re.sub("\\n[ \\t]*CXXFLAGS[ \\t]*:=.*", \
            ("\nCXXFLAGS := -std=%s -Wall -m64 -O2 -fPIC -fmessage-length=0" %(szStd)), szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*CXXFLAGS_DBG[ \\t]*:=.*", \
            ("\nCXXFLAGS_DBG := -std=%s -Wall -m64 -O0 -g3 -fPIC -fmessage-length=0" %(szStd)), szMakeCont)
    #替换链接器
    if "app" == szAppType or "shared" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*LD[ \\t]*:=.*", "\nLD := gcc",
                            szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*LDOUTFLG[ \\t]*:=.*",
                            "\nLDOUTFLG := -o", szMakeCont)
    else:
        szMakeCont = re.sub("\\n[ \\t]*LD[ \\t]*:=.*", "\nLD := ar",
                            szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*LDOUTFLG[ \\t]*:=.*", "\nLDOUTFLG := ",
                            szMakeCont)
    #替换链接选项
    if "app" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*LDFLAGS[ \\t]*:=.*",
                            "\nLDFLAGS := -Wl,-rpath,./", szMakeCont)
    elif "shared" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*LDFLAGS[ \\t]*:=.*",
                            "\nLDFLAGS := -Wl,-rpath,./ -shared", szMakeCont)
    else:
        szMakeCont = re.sub("\\n[ \\t]*LDFLAGS[ \\t]*:=.*",
                            "\nLDFLAGS := -crv", szMakeCont)
    #替换最终目标
    szTarget = os.path.basename(szProjPath)
    if "app" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*TARGET[ \\t]*:=.*",
                            ("\nTARGET := $(BIN_DIR)/%s" % (szTarget)),
                            szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*TARGET_DBG[ \\t]*:=.*",
                            ("\nTARGET_DBG := $(BIN_DIR_DBG)/%s" % (szTarget)),
                            szMakeCont)
    elif "shared" == szAppType:
        szMakeCont = re.sub("\\n[ \\t]*TARGET[ \\t]*:=.*",
                            ("\nTARGET := $(BIN_DIR)/lib%s.so" % (szTarget)),
                            szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*TARGET_DBG[ \\t]*:=.*",
                            ("\nTARGET_DBG := $(BIN_DIR_DBG)/lib%s.so" %
                             (szTarget)), szMakeCont)
    else:
        szMakeCont = re.sub("\\n[ \\t]*TARGET[ \\t]*:=.*",
                            ("\nTARGET := $(BIN_DIR)/lib%s.a" % (szTarget)),
                            szMakeCont)
        szMakeCont = re.sub("\\n[ \\t]*TARGET_DBG[ \\t]*:=.*",
                            ("\nTARGET_DBG := $(BIN_DIR_DBG)/lib%s.a" %
                             (szTarget)), szMakeCont)
    #写入makefile文件
    szErr = maker_public.writeTxtFile(szProjPath + "/makefile", szMakeCont)
    return szErr