青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
一年十二月  誰主春秋
關注:基礎系統(tǒng)工程 密碼學 人工智能
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-162 評論-223 文章-30 trackbacks-0
Shell應用(9):自動化批量編譯
腳本概述
當需要在很多(比如幾十至幾百)臺機器上編譯同一程序時,如果一個個地手工拷貝源碼、再編譯,那么效率就很低,為了能大量節(jié)省手工、并行地編譯,因此寫了一個腳本,該腳本基于自動化腳本語言expect(expect基于tcl)實現(xiàn),基本原理是針對每個遠程主機,創(chuàng)建一個子進程,在該子進程內(nèi)先調(diào)用scp拷貝源碼到遠程主機,再用ssh登錄到遠程主機、發(fā)送cd、configure和make命令,交互期間的命令輸出多用正則分析,最終的編譯輸出保存到當前目錄output子目錄下。其命令行參數(shù)說明如下:
●
第1參數(shù)為遠程主機配置文件:一個多行文本文件,每行格式為IP 用戶名 密碼,空格符分隔,支持#注釋。
●
第2參數(shù)為本地主機源碼目錄:要求該目錄存在Makefile和configure文件。
●
第3參數(shù)為遠程主機目標目錄:用于存放源碼的位置。
腳本實現(xiàn)
拷貝源碼
1
proc
copy_file
{host user srcdir dstdir passwd {
to
10
} } {
2
if
[catch
"
spawn scp -rq $srcdir $user@$host:$dstdir
"
msg] {
3
send_error
"
failed to spawn scp: $msg\n
"
4
exit
1
5
}
6
7
set
timeout $
to
8
expect_after eof
{
9
send_error
"
$host scp died unexpectedly\n
"
10
exit
1
11
}
12
expect {
13
"
(yes/no)?
"
{ send
"
yes\r
"
; exp_continue }
14
-
re
"
(?:P|p)assword:
"
{ send
"
$passwd\r
"
}
15
timeout { do_timeout
"
$host scp
"
}
16
}
17
18
expect {
19
full_buffer
{ exp_continue }
20
timeou
t
{ exp_continue }
21
eof
22
}
23
}
第2行調(diào)用spawn命令執(zhí)行scp命令,并用catch捕捉錯誤;當執(zhí)行成功后,第12行用expect等待遠端輸出(超時默認為10秒),第13、14行自動輸入用戶名和密碼,當過程中網(wǎng)絡連接斷開時,會匹配到第8行的eof;當輸出完成連接關閉時,會匹配到第21行的eof;如果輸出太多超過expect內(nèi)部的buffer時,會匹配到第19行的full_buffer,這里由于為了提高效率,使用了靜默方式的scp,因些實際會匹配到第20行的timeout,不管匹配到哪種情況,都要繼續(xù)直到eof。
執(zhí)行編譯
1
proc
do_make
{host user passwd subdir {
to
10
} } {
2
if
[catch {spawn ssh $user@$host} msg ] {
3
send_error
"
failed to spawn ssh: $msg\n
"
4
exit
1
5
}
6
7
set
timeout $
to
8
expect_after eof {
9
send_error
"
$host ssh died unexpectedly\n
"
10
exit
1
11
}
12
13
expect {
14
"
*yes/no
"
{ send
"
yes\r
"
; exp_continue }
15
-
re
"
(?:P|p)assword:
"
{ send
"
$passwd\r
"
}
16
timeout { do_timeout
"
$host ssh
"
}
17
}
18
wait_cmd $spawn_id passwd
19
20
send
"
cd
$subdir\r
"
21
wait_cmd $spawn_id cd
22
23
send
"
source configure
\r
"
24
wait_cmd $spawn_id configure
25
26
send
"
make
\r
"
27
wait_cmd $spawn_id make
28
29
send
"
exit\r
"
30
expect eof
31
}
關于spawn和expect的解釋與上節(jié)
拷貝源碼
相同,不同的是依次發(fā)送命令cd、source configure、make,每個命令須等到命令提示符后(調(diào)用自定義函數(shù)wait_cmd)再發(fā)下一個,最后發(fā)送exit退出ssh、導致連接關閉,匹配到最后一行的eof。對于有的項目源碼,可能沒有或不用配置,那么configure文件可以不存在或內(nèi)容為空,如果不存在導致報錯也沒關系,不影響make;如果configure出錯,那么make也會出錯。這里使用source是為了使配置在當前shell中生效。
主循環(huán)
1
set
f [open $file r]
2
set
curtime [clock seconds]
3
4
log_user
0
5
set
s {[:blank:]}
6
set
pattern
"
^(\[^#$s]+)\[$s]+(\[^$s]+)\[$s]+(\[^$s]+)
"
7
8
while
{ [gets $f line] !
=
-
1
} {
9
if
{ ![
regexp
$pattern [
string
trimleft $line] ? host user passwd] } {
10
continue
11
}
12
send_user
"
$host $user $passwd\n
"
13
if
{ ![fork] } {
14
15
set
filename output
/
${host}_[clock format $curtime
-
format %y.%m.%d_%H.%M.%S].log
16
log_file
-
noappend
-
a
$filename
17
18
copy_file $host $user $srcdir $dstdir $passwd
30
19
do_make $host $user $passwd $subdir
30
20
21
send_user
"
$host finish\n
"
22
exit
23
}
24
}
打開遠程主機配置文件,讀取每一行直到文件尾,忽略注釋行,用正則提取IP、用戶名和密碼,創(chuàng)建子進程,按IP和當前時間命名log文件(由于前面調(diào)用log_user 0關閉了控制臺輸出,因此為了能記錄輸出到日志文件,一定要加-a選項),最后調(diào)用函數(shù)copy_file和do_make。
完整腳本下載:
autobuild.zip
posted on 2016-09-28 11:04
春秋十二月
閱讀(3858)
評論(0)
編輯
收藏
引用
所屬分類:
System
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關文章:
Windows異常分發(fā)與子系統(tǒng)圖表集 -- 摘自Windows內(nèi)核原理與實現(xiàn)
淺談Linux共享庫庫函數(shù)掛鉤檢測
kretprobe探究思考
基于Rust構(gòu)建WebAssembly
基于VSS可傳輸卷影拷貝的備份架構(gòu)
Shell(11): 創(chuàng)建和刪除so庫軟鏈接
關于make依賴文件的自動生成
Shell應用(10):支持開源庫編譯的Makefile
Shell應用(9):自動化批量編譯
一種攔截Linux動態(tài)庫API的方法及裝置
網(wǎng)站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
本博客所有隨筆均為原創(chuàng),因為不定期維護更新,所以轉(zhuǎn)載請注明出處,如有問題和建議,請留言或評論,發(fā)表您的寶貴意見,藉此平臺以分享交流、共同進步。
聯(lián)系方式:微信math-engineer
<
2025年4月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(79)
給我留言
查看公開留言
查看私人留言
隨筆分類
(161)
Algorithm(49)
C/C++(24)
Compiler(25)
Compute Theory(5)
Database(4)
Network(17)
Opensrc(13)
System(24)
隨筆檔案
(162)
2025年7月 (1)
2025年6月 (2)
2025年4月 (2)
2024年12月 (1)
2024年11月 (1)
2024年9月 (1)
2024年8月 (2)
2024年6月 (1)
2024年5月 (1)
2024年4月 (1)
2024年3月 (2)
2024年2月 (2)
2023年12月 (1)
2023年11月 (2)
2023年10月 (2)
2023年9月 (37)
2021年12月 (1)
2021年10月 (1)
2021年9月 (1)
2021年2月 (1)
2020年5月 (3)
2020年4月 (1)
2019年11月 (4)
2019年7月 (1)
2018年11月 (1)
2017年12月 (1)
2016年12月 (1)
2016年11月 (2)
2016年10月 (1)
2016年9月 (1)
2016年8月 (3)
2016年7月 (4)
2016年5月 (1)
2015年10月 (2)
2015年9月 (1)
2015年6月 (2)
2015年5月 (3)
2015年2月 (1)
2015年1月 (1)
2014年12月 (2)
2014年4月 (2)
2014年3月 (1)
2014年1月 (1)
2013年10月 (1)
2013年9月 (1)
2013年8月 (3)
2013年5月 (1)
2013年3月 (1)
2012年11月 (1)
2012年9月 (3)
2012年8月 (1)
2012年7月 (1)
2012年6月 (5)
2012年5月 (3)
2011年12月 (5)
2011年11月 (1)
2011年10月 (5)
2011年8月 (7)
2011年7月 (6)
2011年6月 (6)
2010年6月 (1)
2009年12月 (1)
2009年8月 (1)
2009年7月 (1)
2009年6月 (1)
2009年4月 (3)
文章分類
(30)
詩詞作品集(30)
關注的開源項目
LLVM
編譯系統(tǒng)
nginx
高性能Web服務器
OpenSSL
密碼學庫
suricata
網(wǎng)絡IPS引擎
最新隨筆
1.?關于分圓域的一般結(jié)論
2.?一個歐拉數(shù)整除問題的兩種證法
3.?有限域上的特征與指數(shù)和之擴展
4.?二元二次型的相似變換、正定性與正交分解
5.?關于群的一些結(jié)論及應用
6.?不定方程的代數(shù)數(shù)論解法
7.?關于橢圓曲線的驗證計算
8.?不可約多項式判別算法的改正
9.?論證有限域上平方根的求解
10.?求解離散對數(shù)問題的Terr算法
積分與排名
積分 - 420452
排名 - 56
最新評論
1.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
很有前途和很有錢途啊。
--chipset
2.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
@chipset
是的
--春秋十二月
3.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
工作是做網(wǎng)絡安全?
--chipset
4.?re: 一種使用函數(shù)指針實現(xiàn)狀態(tài)機的方法
函數(shù)指針實現(xiàn)狀態(tài)機
--linda
5.?re: 多標簽視圖類CTabView的設計實現(xiàn)
為啥代碼缺少一些呢,給新手個完整點的啊
--pekingliu
6.?re: 工作線程與消息循環(huán)
從消息隊列取出消息 mark了
--mmocake
7.?re: 一種簡單的跨平臺套接字管道
評論內(nèi)容較長,點擊標題查看
--IT搬運工
8.?re: 一種簡單的跨平臺套接字管道
windows僅支持af_init和af_init6地址族有錯別字么?
af_init和af_init6
--IT搬運工
9.?re: Shell應用(8):使用awk定位反匯編輸出[未登錄]
厲害
--Chipset
10.?re: TCP分組丟失時的狀態(tài)變遷
不錯
--Binky
閱讀排行榜
1.?基于OpenSSL實現(xiàn)的安全連接(14042)
2.?字符串16進制顯示(12905)
3.?基于boost asio實現(xiàn)的ssl socket框架(12353)
4.?Linux套接字與虛擬文件系統(tǒng)(1):初始化和創(chuàng)建(8709)
5.?關于數(shù)據(jù)庫的一些學習研究心得(8138)
6.?使用CString GetBuffer自適應獲取計算機名稱(7999)
7.?使用正則表達式解析URL(7965)
8.?basic_string內(nèi)存泄露問題之分析解決(7772)
9.?Shell應用(4): 使用sed刪除行尾的^M字符(7703)
10.?nginx iocp(1):tcp異步連接(7675)
評論排行榜
1.?basic_string內(nèi)存泄露問題之分析解決(19)
2.?求單向鏈表倒序第m個元素(11)
3.?基于順序存儲實現(xiàn)的多叉樹(1):深度優(yōu)先存儲(9)
4.?字符大小寫轉(zhuǎn)換(7)
5.?字符串16進制顯示(6)
6.?面向?qū)ο箧i框架的設計與實現(xiàn)(6)
7.?Shell應用(4): 使用sed刪除行尾的^M字符(5)
8.?使用正則表達式解析URL(5)
9.?工作線程與消息循環(huán)(5)
10.?十進制整數(shù)千位分隔符(4)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 春秋十二月
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲免费大片
|
久久夜色精品国产
|
日韩视频国产视频
|
欧美丝袜一区二区
|
亚洲一区网站
|
香蕉成人伊视频在线观看
|
国产无遮挡一区二区三区毛片日本
|
久久国产日韩
|
久久免费精品视频
|
亚洲麻豆av
|
亚洲欧美日韩系列
|
亚洲欧洲美洲综合色网
|
亚洲精品一品区二品区三品区
|
国产精品vip
|
久热爱精品视频线路一
|
欧美激情精品久久久久久黑人
|
在线亚洲欧美视频
|
久久精品91
|
一区二区三区四区国产
|
久久国产高清
|
欧美亚洲在线观看
|
欧美激情黄色片
|
亚洲综合电影一区二区三区
|
久久动漫亚洲
|
亚洲在线免费
|
久久全国免费视频
|
亚洲一区二区三区视频
|
久久久噜噜噜久久狠狠50岁
|
亚洲最新视频在线
|
久久gogo国模裸体人体
|
亚洲一二三区在线
|
久久五月激情
|
久久国产精品一区二区
|
欧美国产视频日韩
|
久久久综合精品
|
欧美三日本三级少妇三2023
|
免费在线欧美视频
|
国产精品一区二区在线观看网站
|
亚洲欧美日韩国产中文
|
久久久亚洲人
|
欧美中文在线观看国产
|
欧美精品七区
|
欧美国产高潮xxxx1819
|
国产一区日韩一区
|
国产精品99久久久久久宅男
|
亚洲人体一区
|
久久久久久久高潮
|
久久久久久久波多野高潮日日
|
欧美特黄视频
|
日韩视频一区二区三区
|
99re热精品
|
欧美极品在线观看
|
亚洲国产欧美国产综合一区
|
国内精品视频一区
|
欧美一区二视频
|
欧美伊久线香蕉线新在线
|
欧美亚洲成人网
|
一本色道久久
|
亚洲欧美大片
|
国产精品欧美一区二区三区奶水
|
亚洲黄色在线
|
一本色道**综合亚洲精品蜜桃冫
|
免费av成人在线
|
亚洲国产精品成人综合色在线婷婷
|
国产自产v一区二区三区c
|
午夜亚洲福利在线老司机
|
香蕉尹人综合在线观看
|
国产精品一香蕉国产线看观看
|
亚洲天堂第二页
|
欧美亚洲一区二区在线观看
|
国产精品一区二区三区观看
|
亚洲嫩草精品久久
|
久久都是精品
|
亚洲第一页在线
|
欧美精品一区二区三区蜜桃
|
日韩一级在线
|
欧美伊人久久久久久午夜久久久久
|
国产主播一区
|
久久一区激情
|
91久久在线观看
|
国产欧美日韩在线播放
|
老鸭窝91久久精品色噜噜导演
|
国产在线观看精品一区二区三区
|
久久aⅴ国产紧身牛仔裤
|
老司机一区二区
|
亚洲免费成人av
|
国产精品亚洲美女av网站
|
久久精品国产免费
|
亚洲日本欧美
|
久久福利一区
|
亚洲精选一区二区
|
国产精品家教
|
另类图片综合电影
|
99re这里只有精品6
|
久久av一区二区三区漫画
|
在线观看视频免费一区二区三区
|
欧美激情综合五月色丁香小说
|
中文欧美字幕免费
|
久久婷婷人人澡人人喊人人爽
|
亚洲欧洲日本在线
|
国产精品青草久久
|
免费欧美网站
|
午夜精品一区二区三区在线视
|
欧美电影免费观看高清完整版
|
中国成人亚色综合网站
|
好看的日韩视频
|
欧美视频在线免费
|
久久久久一区二区三区四区
|
9久re热视频在线精品
|
免费黄网站欧美
|
亚洲综合日韩
|
99在线精品免费视频九九视
|
国产一区深夜福利
|
国产精品久久久久高潮
|
免费欧美高清视频
|
欧美专区亚洲专区
|
一区二区三区视频在线播放
|
亚洲电影免费在线
|
久久青青草原一区二区
|
亚洲一区亚洲
|
99在线|亚洲一区二区
|
亚洲第一在线综合网站
|
国产一区美女
|
国产精品日本一区二区
|
欧美日韩视频免费播放
|
欧美粗暴jizz性欧美20
|
久久精品国产一区二区三区免费看
|
一区二区三区视频在线看
|
亚洲激情一区二区三区
|
亚洲大片免费看
|
欧美成人免费在线视频
|
久久人体大胆视频
|
久久久免费av
|
久久久久欧美精品
|
久久激情综合网
|
欧美一区二区三区另类
|
亚洲在线观看免费
|
99视频有精品
|
国产精品99久久99久久久二8
|
亚洲美洲欧洲综合国产一区
|
亚洲精品免费一二三区
|
亚洲国产小视频
|
亚洲日本va在线观看
|
亚洲国产小视频在线观看
|
亚洲国产另类久久精品
|
最近中文字幕日韩精品
|
亚洲精品一区二区在线
|
亚洲精品专区
|
在线一区亚洲
|
亚洲欧美视频在线观看视频
|
午夜精品久久久久久久99热浪潮
|
性感少妇一区
|
久热精品在线视频
|
欧美第一黄网免费网站
|
欧美视频日韩
|
国内视频一区
|
国内精品模特av私拍在线观看
|
国产日韩欧美亚洲
|
国内精品久久久久久久影视麻豆
|
极品中文字幕一区
|
亚洲经典自拍
|
亚洲午夜久久久
|
欧美一区二区三区男人的天堂
|
久久久高清一区二区三区
|
老司机67194精品线观看
|
亚洲激情视频在线
|
一区二区日韩精品
|
欧美一区二区日韩
|
免费欧美在线视频
|
国产精品magnet
|
在线观看av一区
|
亚洲综合色网站
|
免费人成网站在线观看欧美高清
|
欧美激情精品
|
亚洲一区二区三区四区五区午夜
|
久久成人综合网
|
欧美日韩国产91
|
狠狠色噜噜狠狠狠狠色吗综合
|
亚洲人久久久
|
久久精品二区
|
亚洲精品国产精品国产自
|
亚洲欧美精品伊人久久
|
免费在线观看精品
|
国产欧美一区二区精品忘忧草
|
亚洲全部视频
|
久久久久久久久久久久久久一区
|
亚洲国产导航
|
欧美资源在线
|
国产精品一区二区久久精品
|
国产日韩精品在线观看
|
99视频一区
|
欧美高清视频免费观看
|
亚洲一线二线三线久久久
|
欧美激情一区二区三区在线视频观看
|
久久久综合网站
|
国产欧美精品一区aⅴ影院
|
亚洲精品永久免费精品
|
开心色5月久久精品
|
夜久久久久久
|
欧美日韩国产色站一区二区三区
|