一種多服務(wù)器一鍵編譯的實現(xiàn)方法
【專利摘要】本發(fā)明公開了一種多服務(wù)器一鍵編譯的實現(xiàn)方法,包括:建立主編譯服務(wù)器向多個遠(yuǎn)程編譯服務(wù)器下發(fā)遠(yuǎn)程ssh命令的免密碼信任機(jī)制;主編譯服務(wù)器分別向已經(jīng)建立免密碼信任機(jī)制的遠(yuǎn)程編譯服務(wù)器下發(fā)開始編譯鏡像文件的ssh遠(yuǎn)程命令;遠(yuǎn)程編譯服務(wù)器鏡像文件編譯完成后,將編譯結(jié)果反饋給主編譯服務(wù)器,主編譯服務(wù)器根據(jù)反饋編譯結(jié)果決定是否進(jìn)行復(fù)合鏡像文件制作;主編譯服務(wù)器決定進(jìn)行復(fù)合鏡像文件制作,遠(yuǎn)程編譯服務(wù)器將編譯的鏡像文件分別傳輸至最終鏡像存放服務(wù)器中,并將存放地址寫入鏡像制作標(biāo)志文件,主編譯服務(wù)器根據(jù)鏡像制作標(biāo)志文件進(jìn)行復(fù)合鏡像文件制作。本發(fā)明實現(xiàn)多服務(wù)器一鍵免密碼編譯,減少編譯出錯率、提高編譯效率、優(yōu)化程序結(jié)構(gòu)。
【專利說明】
一種多服務(wù)器一鍵編譯的實現(xiàn)方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體涉及一種多服務(wù)器一鍵編譯的實現(xiàn)方法。
【背景技術(shù)】
[0002]隨著多操作系統(tǒng)的普及以及各種應(yīng)用程序的日趨完善,對編譯系統(tǒng)的要求越來越高,有時需要在多個編譯服務(wù)器上編譯多個鏡像文件,編譯完成后將多個鏡像文件制作成一個復(fù)合鏡像。如果逐個登陸多個編譯服務(wù)器進(jìn)行編譯鏡像文件,編譯完成后再逐個將鏡像文件拷貝到一個編譯服務(wù)器制作成復(fù)合鏡像,這樣會使復(fù)合鏡像的制作流程非常復(fù)雜,耗時、不便于維護(hù),且手動執(zhí)行方法增加了編譯出錯的幾率。
[0003]為了簡化多個編譯服務(wù)器上編譯多個鏡像文件的復(fù)雜編譯流程,解決現(xiàn)有技術(shù)中分別登陸多個編譯服務(wù)器、手動拷貝并制作復(fù)合鏡像所帶來的耗時、耗力、易出錯的問題,一鍵在多個編譯服務(wù)器上編譯多個鏡像文件并自動制作出復(fù)合鏡像已成為解決該問題的最好選擇,因此,如何在保證系統(tǒng)可靠性的前提下,在多個編譯服務(wù)器間建立信任機(jī)制,使各個編譯服務(wù)器間可以免密碼通信,實現(xiàn)多服務(wù)器間的一鍵編譯已成為急切需要解決的問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是在保證系統(tǒng)可靠性的前提下,在多個編譯服務(wù)器間建立信任機(jī)制,使各個編譯服務(wù)器間可以免密碼通信,實現(xiàn)多服務(wù)器間的一鍵編譯的問題。
[0005]為了解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是提供一種多服務(wù)器一鍵編譯的實現(xiàn)方法,包括以下步驟:
[0006]步驟S10、建立主編譯服務(wù)器向多個遠(yuǎn)程編譯服務(wù)器下發(fā)遠(yuǎn)程ssh命令的免密碼信任機(jī)制;
[0007]步驟S20、主編譯服務(wù)器分別向已經(jīng)建立免密碼信任機(jī)制的遠(yuǎn)程編譯服務(wù)器下發(fā)開始編譯鏡像文件的s sh遠(yuǎn)程命令;
[0008]步驟S30、遠(yuǎn)程編譯服務(wù)器鏡像文件編譯完成后,將編譯結(jié)果反饋給主編譯服務(wù)器,主編譯服務(wù)器根據(jù)反饋編譯結(jié)果決定是否進(jìn)行復(fù)合鏡像文件制作;
[0009]步驟S40、主編譯服務(wù)器決定進(jìn)行復(fù)合鏡像文件制作,遠(yuǎn)程編譯服務(wù)器將編譯的鏡像文件分別傳輸至最終鏡像存放服務(wù)器中,并將存放地址寫入鏡像制作標(biāo)志文件,主編譯服務(wù)器根據(jù)鏡像制作標(biāo)志文件進(jìn)行復(fù)合鏡像文件制作。
[0010]在上述方法中,步驟SlO具體包括:
[0011 ]步驟SlOl、在主編譯服務(wù)器上生成執(zhí)行ssh命令的加密公鑰文件和解密密鑰文件,并將加密公鑰文件發(fā)送給遠(yuǎn)程編譯服務(wù)器;
[0012]步驟S102、在遠(yuǎn)程編譯服務(wù)器上生成公鑰保存文件,并將主編譯服務(wù)器生成的加密公鑰文件保存在該文件中。
[0013]在上述方法中,步驟SlOl的實現(xiàn)執(zhí)行命令如下:[OOM] 主編譯服務(wù)器生成加密公鑰文件id_rsa.pub和解密秘鑰文件id_rsa指令:#ssh_keygen-t rsa;
[0015]主編譯服務(wù)器使用ssh命令在遠(yuǎn)程編譯服務(wù)器上創(chuàng)建.ssh目錄,并修改其可執(zhí)行權(quán)限的指令:#ssh rooti${remote_ip}^mkdir.ssh;chmod 0700.ssh";
[0016]主編譯服務(wù)器使用ssh命令向遠(yuǎn)程編譯服務(wù)器發(fā)送加密公鑰文件的指令:#scp?/.ssh/id_rsa.pub rooti${remote_ip}:.ssh/id_rsa.pub。
[0017]在上述方法中,步驟S102的實現(xiàn)執(zhí)行命令如下:
[0018]在遠(yuǎn)程服務(wù)器的ssh目錄下創(chuàng)建公鑰保存文件authorized_keys的指令:#touch/root/.ssh/authorized_keys;
[0019]修改公鑰保存文件authorized_keys可執(zhí)行權(quán)限的指令:Schmod 600?/.ssh/authorized_keys;
[0020]將主編譯服務(wù)器生成的加密公鑰文件內(nèi)容追加保存到公鑰保存文件的指令:#cat/root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys。
[0021]在上述方法中,在步驟S102中,如果遠(yuǎn)程編譯服務(wù)器上已存在公鑰保存文件,則不再重新生成該文件。
[0022]在上述方法中,在將加密公鑰文件的內(nèi)容追加到公鑰保存文件中時,使用“》”,不用“〉”,用“〉”會清空遠(yuǎn)程編譯服務(wù)器的原有密鑰文件內(nèi)容。
[0023]在上述方法中,步驟S20的ssh遠(yuǎn)程命令格式為:
[0024]ssh${username}i${remote_ip}${command};
[0025]其中,username為遠(yuǎn)程編譯服務(wù)器登陸用戶名,remotejp為遠(yuǎn)程編譯服務(wù)器IP地址,co_and為向遠(yuǎn)程編譯服務(wù)器下發(fā)的遠(yuǎn)程命令。
[0026]在上述方法中,所述反饋編譯結(jié)果包括編譯狀態(tài)文件和鏡像文件,而編譯狀態(tài)文件以文件存在狀態(tài)的形式提供,編譯狀態(tài)文件存在表示遠(yuǎn)程編譯服務(wù)器編譯完成,編譯狀態(tài)文件不存在表示未編譯完成。
[0027]在上述方法中,在步驟S40中,最終鏡像存放服務(wù)器是主編譯服務(wù)器或其他服務(wù)器,遠(yuǎn)程編譯服務(wù)器通過ncftpput命令將鏡像文件傳輸至最終鏡像存放服務(wù)器。
[0028]本發(fā)明利用ssh遠(yuǎn)程命令在多個編譯服務(wù)器之間建立信任機(jī)制,使得主編譯服務(wù)器可以免密碼向遠(yuǎn)程編譯服務(wù)器下發(fā)ssh遠(yuǎn)程命令,并通過公鑰和密鑰機(jī)制進(jìn)行校驗合法性,無需再輸入遠(yuǎn)程服務(wù)器的密碼,實現(xiàn)多服務(wù)器一鍵編譯,不僅減少了程序運(yùn)行中手動介入部分,減少了編譯出錯幾率、提高了編譯效率;并在保證安全可靠性的前提下進(jìn)一步免除了執(zhí)行ssh遠(yuǎn)程命令的密碼輸入,優(yōu)化程序結(jié)構(gòu)。
【附圖說明】
[0029]圖1為本發(fā)明提供的一種多服務(wù)器一鍵編譯的實現(xiàn)方法的流程圖;
[0030]圖2為本發(fā)明中一鍵編譯的流程圖;
[0031]圖3為本發(fā)明中主編譯服務(wù)器向遠(yuǎn)程編譯服務(wù)器分別下發(fā)ssh遠(yuǎn)程命令的實施例的流程圖。
【具體實施方式】
[0032]本發(fā)明主要應(yīng)用于多編譯服務(wù)器編譯復(fù)合鏡像產(chǎn)品的情形,為實現(xiàn)一鍵在多個編譯服務(wù)器上編譯多個鏡像文件,在多個編譯服務(wù)器中選擇了一個編譯服務(wù)器為主(下稱主編譯服務(wù)器),向其他編譯服務(wù)器(下稱遠(yuǎn)程編譯服務(wù)器)下發(fā)遠(yuǎn)程命令,以便多個編譯服務(wù)器同時進(jìn)行編譯。
[0033]在本發(fā)明中,主編譯服務(wù)器向多個遠(yuǎn)程編譯服務(wù)器下發(fā)遠(yuǎn)程命令是通過ssh命令實現(xiàn)的,而考慮到每次執(zhí)行ssh命令,都需要交互輸入遠(yuǎn)程編譯服務(wù)器的用戶名和密碼,而一鍵編譯功能主要通過腳本實現(xiàn),無法進(jìn)行交互操作,故本發(fā)明在主編譯服務(wù)器與遠(yuǎn)程編譯服務(wù)器之間建立了信任機(jī)制,實現(xiàn)主編譯服務(wù)器與遠(yuǎn)程編譯服務(wù)器之間免密碼交互執(zhí)行ssh命令。
[0034]下面結(jié)合說明書附圖和具體實施例對本發(fā)明做出詳細(xì)的說明。
[0035]如圖1所示,本發(fā)明提供的一種多服務(wù)器一鍵編譯的實現(xiàn)方法,包括以下步驟:
[0036]步驟S10、建立主編譯服務(wù)器向多個遠(yuǎn)程編譯服務(wù)器下發(fā)遠(yuǎn)程ssh命令的免密碼信任機(jī)制,具體為:
[0037]步驟SlOl、在主編譯服務(wù)器上生成執(zhí)行ssh命令的加密公鑰文件和解密密鑰文件,并將加密公鑰文件發(fā)送給遠(yuǎn)程編譯服務(wù)器,實現(xiàn)執(zhí)行命令如下:
[0038]#ssh-keygen-t rsa(備注:生成加密公鑰和解密秘鑰文件指令,連續(xù)三次回車后,會在.ssh目錄下生成加密公鑰文件id_rsa.pub和解密秘鑰文件id_rsa;
[0039]#ssh rooti$ {remote_ip} ^mkdir.ssh ; chmod 0700.ssh"(備注:在主編譯服務(wù)器上使用SSh命令在遠(yuǎn)程編譯服務(wù)器上創(chuàng)建.SSh目錄,并修改可執(zhí)行權(quán)限的指令,執(zhí)行該指令時需要輸入對應(yīng)遠(yuǎn)程編譯服務(wù)器用戶密碼0700);
[0040]#scp?/.ssh/id_rsa.pub rooti$ {remote_ip}:.ssh/id_rsa.pub(備注:在主編譯服務(wù)器上使用ssh命令向遠(yuǎn)程編譯服務(wù)器發(fā)送加密公鑰文件id_rsa.pub的指令;執(zhí)行該指令時,需要輸入對應(yīng)遠(yuǎn)程編譯服務(wù)器用戶密碼);
[0041]步驟S102、在遠(yuǎn)程編譯服務(wù)器上生成公鑰保存文件,并將主編譯服務(wù)器生成的加密公鑰文件保存在該文件中;實現(xiàn)執(zhí)行命令為:
[0042]#touch/root/.ssh/authorized_keys (備注:在遠(yuǎn)程服務(wù)器的ssh目錄下創(chuàng)建公鑰保存文件authorized_keys的指令,該文件是Linux系統(tǒng)用于保存加密公鑰的文件;如果已經(jīng)存在這個文件,可跳過);
[0043]Schmod 600?/.ssh/authorized_keys (備注:修改公鑰保存文件authorized_keys可執(zhí)行權(quán)限的指令);
[0044]#cat/root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys ;(備注:將主編譯服務(wù)器生成的加密公鑰文件內(nèi)容追加保存到公鑰保存文件authorized_keys中的指令)。
[0045]在本發(fā)明中,在將加密公鑰文件id_rsa.pub的內(nèi)容追加到公鑰保存文件authorizecLkeys中,使用的是“》”;注意不要用“〉”,否則會清空原有的內(nèi)容(遠(yuǎn)程編譯服務(wù)器的原有密鑰文件內(nèi)容),使其他人無法使用原有的密鑰登錄。
[0046]至此,由于主編譯服務(wù)器上的解密解密秘鑰可以解密遠(yuǎn)程編譯服務(wù)器公鑰保存文件authorizecLkeys中的加密公鑰,從而實現(xiàn)在主編譯服務(wù)器免密碼向遠(yuǎn)程編譯服務(wù)器下發(fā)ssh遠(yuǎn)程命令。
[0047]步驟S20、主編譯服務(wù)器向多個已經(jīng)建立免密碼信任機(jī)制的遠(yuǎn)程編譯服務(wù)器分別下發(fā)SSh遠(yuǎn)程命令,遠(yuǎn)程編譯服務(wù)器分別開始編譯鏡像文件,同時開始多服務(wù)器一鍵編譯(如圖2所示),ssh遠(yuǎn)程命令格式為:
[0048]ssh${username}i${remote_ip}${command}
[0049]其中,username為遠(yuǎn)程編譯服務(wù)器登陸用戶名,remotejp為遠(yuǎn)程編譯服務(wù)器IP地址,co_and為向遠(yuǎn)程編譯服務(wù)器下發(fā)的遠(yuǎn)程命令。
[0050]如圖3所示的主編譯服務(wù)器向遠(yuǎn)程編譯服務(wù)器分別下發(fā)ssh遠(yuǎn)程命令的實施例,在主編譯服務(wù)器(IP為10.96.16.31)上,向遠(yuǎn)程編譯服務(wù)器(IP為10.96.16.30)下發(fā)遠(yuǎn)程命令〃cd/home/;./auto_make.sh〃,則可在主編譯服務(wù)器shell命令行下執(zhí)行如下命令:
[0051]ssh root@10.96.16.30"cd/home/;./auto_make.sh"。
[0052]步驟S30、遠(yuǎn)程編譯服務(wù)器編譯完成后,需要將編譯結(jié)果反饋給主編譯服務(wù)器,主編譯服務(wù)器根據(jù)反饋編譯結(jié)果決定是否進(jìn)行復(fù)合鏡像文件制作;
[0053]其中,反饋編譯結(jié)果包括編譯狀態(tài)文件和鏡像文件;而主編譯服務(wù)器根據(jù)反饋編譯結(jié)果決定是否進(jìn)行復(fù)合鏡像文件制作的判斷依據(jù)是通過標(biāo)志文件,具體為:
[0054]編譯狀態(tài)文件以文件存在狀態(tài)的形式提供,即編譯狀態(tài)文件存在表示遠(yuǎn)程編譯服務(wù)器編譯完成,編譯狀態(tài)文件不存在表示未編譯完成;主編譯服務(wù)器通過遍歷所有遠(yuǎn)程編譯服務(wù)器的編譯狀態(tài)文件是否都存在,來判斷是否開始復(fù)合鏡像制作。
[0055]步驟S40、當(dāng)主編譯服務(wù)器決定復(fù)合鏡像文件制作時,鏡像文件由編譯該文件的遠(yuǎn)程編譯服務(wù)器傳輸至ftp服務(wù)器(File Transfer Protocol Server,最終鏡像存放服務(wù)器)中,并將存放地址寫入鏡像制作標(biāo)志文件,主編譯服務(wù)器根據(jù)鏡像制作標(biāo)志文件中的地址調(diào)用各個遠(yuǎn)程編譯服務(wù)器編譯的鏡像文件進(jìn)行復(fù)合鏡像文件制作。
[0056]在本發(fā)明中,ftp服務(wù)器可以是主編譯服務(wù)器,也可以是其他服務(wù)器,遠(yuǎn)程編譯服務(wù)器通過ncftpput命令(從遠(yuǎn)端FTP服務(wù)器通過FTP協(xié)議上傳文件的命令)將鏡像文件傳輸至ftp服務(wù)器的。
[0057]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【主權(quán)項】
1.一種多服務(wù)器一鍵編譯的實現(xiàn)方法,其特征在于,包括以下步驟: 步驟S10、建立主編譯服務(wù)器向多個遠(yuǎn)程編譯服務(wù)器下發(fā)遠(yuǎn)程SSh命令的免密碼信任機(jī)制; 步驟S20、主編譯服務(wù)器分別向已經(jīng)建立免密碼信任機(jī)制的遠(yuǎn)程編譯服務(wù)器下發(fā)開始編譯鏡像文件的s sh遠(yuǎn)程命令; 步驟S30、遠(yuǎn)程編譯服務(wù)器鏡像文件編譯完成后,將編譯結(jié)果反饋給主編譯服務(wù)器,主編譯服務(wù)器根據(jù)反饋編譯結(jié)果決定是否進(jìn)行復(fù)合鏡像文件制作; 步驟S40、主編譯服務(wù)器決定進(jìn)行復(fù)合鏡像文件制作,遠(yuǎn)程編譯服務(wù)器將編譯的鏡像文件分別傳輸至最終鏡像存放服務(wù)器中,并將存放地址寫入鏡像制作標(biāo)志文件,主編譯服務(wù)器根據(jù)鏡像制作標(biāo)志文件進(jìn)行復(fù)合鏡像文件制作。2.如權(quán)利要求1所述的方法,其特征在于,步驟SlO具體包括: 步驟S101、在主編譯服務(wù)器上生成執(zhí)行ssh命令的加密公鑰文件和解密密鑰文件,并將加密公鑰文件發(fā)送給遠(yuǎn)程編譯服務(wù)器; 步驟S102、在遠(yuǎn)程編譯服務(wù)器上生成公鑰保存文件,并將主編譯服務(wù)器生成的加密公鑰文件保存在該文件中。3.如權(quán)利要求2所述的方法,其特征在于,步驟SlOl的實現(xiàn)執(zhí)行命令如下: 主編譯服務(wù)器生成加密公鑰文件id_rsa.pub和解密秘鑰文件id_rsa指令:#ssh-keygen-t rsa; 主編譯服務(wù)器使用SSh命令在遠(yuǎn)程編譯服務(wù)器上創(chuàng)建.SSh目錄,并修改其可執(zhí)行權(quán)限的指令:#ssh rooti${remote_ip}^mkdir.ssh;chmod0700.ssh"; 主編譯服務(wù)器使用SSh命令向遠(yuǎn)程編譯服務(wù)器發(fā)送加密公鑰文件的指令:#SCp?/.ssh/id_rsa.pub rooti${remote_ip}:.ssh/id_rsa.pub。4.如權(quán)利要求2所述的方法,其特征在于,步驟S102的實現(xiàn)執(zhí)行命令如下: 在遠(yuǎn)程服務(wù)器的ssh目錄下創(chuàng)建公鑰保存文件author ized_key s的指令:#touch/root/.ssh/authorized_keys; 修改公鑰保存文件authori zed_keys可執(zhí)行權(quán)限的指令:#chmod 600?/.ssh/authorized_keys; 將主編譯服務(wù)器生成的加密公鑰文件內(nèi)容追加保存到公鑰保存文件的指令:#cat/root/.ssh/id_rsa.pub>>/root/.ssh/authorized_keys05.如權(quán)利要求2所述的方法,其特征在于,在步驟S102中,如果遠(yuǎn)程編譯服務(wù)器上已存在公鑰保存文件,則不再重新生成該文件。6.如權(quán)利要求4所述的方法,其特征在于,在將加密公鑰文件的內(nèi)容追加到公鑰保存文件中時,使用“》”,不用“〉”,用“〉”會清空遠(yuǎn)程編譯服務(wù)器的原有密鑰文件內(nèi)容。7.如權(quán)利要求1所述的方法,其特征在于,步驟S20的ssh遠(yuǎn)程命令格式為: ssh${username}i${remote_ip}${command}; 其中,username為遠(yuǎn)程編譯服務(wù)器登陸用戶名,remotejp為遠(yuǎn)程編譯服務(wù)器IP地址,co_and為向遠(yuǎn)程編譯服務(wù)器下發(fā)的遠(yuǎn)程命令。8.如權(quán)利要求1所述的方法,其特征在于,所述反饋編譯結(jié)果包括編譯狀態(tài)文件和鏡像文件,而編譯狀態(tài)文件以文件存在狀態(tài)的形式提供,編譯狀態(tài)文件存在表示遠(yuǎn)程編譯服務(wù)器編譯完成,編譯狀態(tài)文件不存在表示未編譯完成。9.如權(quán)利要求1所述的方法,其特征在于,在步驟S40中,最終鏡像存放服務(wù)器是主編譯服務(wù)器或其他服務(wù)器,遠(yuǎn)程編譯服務(wù)器通過ncftpput命令將鏡像文件傳輸至最終鏡像存放服務(wù)器。
【文檔編號】G06F9/45GK106020919SQ201610302286
【公開日】2016年10月12日
【申請日】2016年5月9日
【發(fā)明人】呂佳祥, 李華敏, 趙偉, 李超純
【申請人】烽火通信科技股份有限公司