青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
一年十二月  誰主春秋
關注:基礎系統工程 密碼學 人工智能
C++博客
首頁
新隨筆
聯系
聚合
管理
隨筆-162 評論-223 文章-30 trackbacks-0
Shell應用(9):自動化批量編譯
腳本概述
當需要在很多(比如幾十至幾百)臺機器上編譯同一程序時,如果一個個地手工拷貝源碼、再編譯,那么效率就很低,為了能大量節省手工、并行地編譯,因此寫了一個腳本,該腳本基于自動化腳本語言expect(expect基于tcl)實現,基本原理是針對每個遠程主機,創建一個子進程,在該子進程內先調用scp拷貝源碼到遠程主機,再用ssh登錄到遠程主機、發送cd、configure和make命令,交互期間的命令輸出多用正則分析,最終的編譯輸出保存到當前目錄output子目錄下。其命令行參數說明如下:
●
第1參數為遠程主機配置文件:一個多行文本文件,每行格式為IP 用戶名 密碼,空格符分隔,支持#注釋。
●
第2參數為本地主機源碼目錄:要求該目錄存在Makefile和configure文件。
●
第3參數為遠程主機目標目錄:用于存放源碼的位置。
腳本實現
拷貝源碼
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行調用spawn命令執行scp命令,并用catch捕捉錯誤;當執行成功后,第12行用expect等待遠端輸出(超時默認為10秒),第13、14行自動輸入用戶名和密碼,當過程中網絡連接斷開時,會匹配到第8行的eof;當輸出完成連接關閉時,會匹配到第21行的eof;如果輸出太多超過expect內部的buffer時,會匹配到第19行的full_buffer,這里由于為了提高效率,使用了靜默方式的scp,因些實際會匹配到第20行的timeout,不管匹配到哪種情況,都要繼續直到eof。
執行編譯
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的解釋與上節
拷貝源碼
相同,不同的是依次發送命令cd、source configure、make,每個命令須等到命令提示符后(調用自定義函數wait_cmd)再發下一個,最后發送exit退出ssh、導致連接關閉,匹配到最后一行的eof。對于有的項目源碼,可能沒有或不用配置,那么configure文件可以不存在或內容為空,如果不存在導致報錯也沒關系,不影響make;如果configure出錯,那么make也會出錯。這里使用source是為了使配置在當前shell中生效。
主循環
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、用戶名和密碼,創建子進程,按IP和當前時間命名log文件(由于前面調用log_user 0關閉了控制臺輸出,因此為了能記錄輸出到日志文件,一定要加-a選項),最后調用函數copy_file和do_make。
完整腳本下載:
autobuild.zip
posted on 2016-09-28 11:04
春秋十二月
閱讀(3858)
評論(0)
編輯
收藏
引用
所屬分類:
System
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Windows異常分發與子系統圖表集 -- 摘自Windows內核原理與實現
淺談Linux共享庫庫函數掛鉤檢測
kretprobe探究思考
基于Rust構建WebAssembly
基于VSS可傳輸卷影拷貝的備份架構
Shell(11): 創建和刪除so庫軟鏈接
關于make依賴文件的自動生成
Shell應用(10):支持開源庫編譯的Makefile
Shell應用(9):自動化批量編譯
一種攔截Linux動態庫API的方法及裝置
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
本博客所有隨筆均為原創,因為不定期維護更新,所以轉載請注明出處,如有問題和建議,請留言或評論,發表您的寶貴意見,藉此平臺以分享交流、共同進步。
聯系方式:微信math-engineer
<
2012年6月
>
日
一
二
三
四
五
六
27
28
29
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
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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
編譯系統
nginx
高性能Web服務器
OpenSSL
密碼學庫
suricata
網絡IPS引擎
最新隨筆
1.?關于分圓域的一般結論
2.?一個歐拉數整除問題的兩種證法
3.?有限域上的特征與指數和之擴展
4.?二元二次型的相似變換、正定性與正交分解
5.?關于群的一些結論及應用
6.?不定方程的代數數論解法
7.?關于橢圓曲線的驗證計算
8.?不可約多項式判別算法的改正
9.?論證有限域上平方根的求解
10.?求解離散對數問題的Terr算法
積分與排名
積分 - 420454
排名 - 56
最新評論
1.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
很有前途和很有錢途啊。
--chipset
2.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
@chipset
是的
--春秋十二月
3.?re: 一種攔截Linux原始套接字IO的方法[未登錄]
工作是做網絡安全?
--chipset
4.?re: 一種使用函數指針實現狀態機的方法
函數指針實現狀態機
--linda
5.?re: 多標簽視圖類CTabView的設計實現
為啥代碼缺少一些呢,給新手個完整點的啊
--pekingliu
6.?re: 工作線程與消息循環
從消息隊列取出消息 mark了
--mmocake
7.?re: 一種簡單的跨平臺套接字管道
評論內容較長,點擊標題查看
--IT搬運工
8.?re: 一種簡單的跨平臺套接字管道
windows僅支持af_init和af_init6地址族有錯別字么?
af_init和af_init6
--IT搬運工
9.?re: Shell應用(8):使用awk定位反匯編輸出[未登錄]
厲害
--Chipset
10.?re: TCP分組丟失時的狀態變遷
不錯
--Binky
閱讀排行榜
1.?基于OpenSSL實現的安全連接(14042)
2.?字符串16進制顯示(12905)
3.?基于boost asio實現的ssl socket框架(12353)
4.?Linux套接字與虛擬文件系統(1):初始化和創建(8709)
5.?關于數據庫的一些學習研究心得(8138)
6.?使用CString GetBuffer自適應獲取計算機名稱(7999)
7.?使用正則表達式解析URL(7965)
8.?basic_string內存泄露問題之分析解決(7772)
9.?Shell應用(4): 使用sed刪除行尾的^M字符(7703)
10.?nginx iocp(1):tcp異步連接(7675)
評論排行榜
1.?basic_string內存泄露問題之分析解決(19)
2.?求單向鏈表倒序第m個元素(11)
3.?基于順序存儲實現的多叉樹(1):深度優先存儲(9)
4.?字符大小寫轉換(7)
5.?字符串16進制顯示(6)
6.?面向對象鎖框架的設計與實現(6)
7.?Shell應用(4): 使用sed刪除行尾的^M字符(5)
8.?使用正則表達式解析URL(5)
9.?工作線程與消息循環(5)
10.?十進制整數千位分隔符(4)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 春秋十二月
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
久久漫画官网
|
欧美日韩亚洲成人
|
亚洲欧洲在线一区
|
午夜电影亚洲
|
欧美在线综合
|
裸体一区二区三区
|
最新69国产成人精品视频免费
|
亚洲欧美经典视频
|
亚洲深夜福利网站
|
亚洲欧美亚洲
|
久久视频在线免费观看
|
欧美成人情趣视频
|
欧美日韩在线视频一区二区
|
国产精品毛片大码女人
|
国产亚洲人成a一在线v站
|
亚洲高清激情
|
久久男人资源视频
|
老司机久久99久久精品播放免费
|
欧美大片免费看
|
在线午夜精品
|
久久伊人一区二区
|
国产精品美女久久久久久2018
|
国精品一区二区
|
最新日韩在线视频
|
欧美一区深夜视频
|
亚洲三级电影全部在线观看高清
|
亚洲一区二区三区免费在线观看
|
久久激情视频
|
国产精品高潮久久
|
亚洲精品在线视频
|
久久精品综合一区
|
亚洲精品一区二区三
|
久久九九免费视频
|
国产精品乱码妇女bbbb
|
亚洲三级影片
|
久热这里只精品99re8久
|
亚洲一区二区黄
|
欧美一区二区三区另类
|
欧美午夜精品
|
一区二区国产在线观看
|
另类图片国产
|
午夜精品一区二区三区在线播放
|
欧美乱妇高清无乱码
|
国产日韩欧美一区在线
|
亚洲一区二区在线看
|
亚洲电影中文字幕
|
久久午夜影视
|
亚洲国产国产亚洲一二三
|
久久午夜色播影院免费高清
|
亚洲欧美综合国产精品一区
|
欧美日韩视频专区在线播放
|
国产精品入口麻豆原神
|
这里只有精品丝袜
|
亚洲欧洲日本mm
|
免费在线视频一区
|
亚洲欧洲日夜超级视频
|
亚洲大胆视频
|
欧美精品1区
|
国产视频一区在线观看
|
日韩亚洲欧美成人
|
久久视频一区二区
|
浪潮色综合久久天堂
|
久久亚洲影院
|
国产精品一二三
|
一区二区视频免费在线观看
|
夜夜精品视频
|
久色婷婷小香蕉久久
|
亚洲国产精品ⅴa在线观看
|
欧美久久在线
|
欧美日韩成人一区
|
欧美**字幕
|
性欧美精品高清
|
国产精品乱子久久久久
|
亚洲欧美日韩在线播放
|
亚洲欧美色一区
|
亚洲激情视频在线观看
|
欧美成人精品
|
猫咪成人在线观看
|
午夜欧美不卡精品aaaaa
|
蜜桃久久精品一区二区
|
夜夜嗨av一区二区三区免费区
|
国产日韩精品综合网站
|
欧美中文字幕在线播放
|
男人天堂欧美日韩
|
99国产精品99久久久久久粉嫩
|
国产欧美日韩视频
|
一区二区三区视频在线看
|
亚洲色无码播放
|
日韩午夜在线电影
|
久久精品国产久精国产思思
|
99热在这里有精品免费
|
先锋影音一区二区三区
|
亚洲一区二区日本
|
免费黄网站欧美
|
亚洲午夜视频在线
|
午夜精品久久久久久久男人的天堂
|
亚洲精华国产欧美
|
久久国产精品亚洲77777
|
欧美在线精品一区
|
欧美亚一区二区
|
欧美综合第一页
|
国产欧美日韩高清
|
亚洲最黄网站
|
日韩视频中文
|
欧美色网在线
|
久久精品男女
|
国产亚洲精品资源在线26u
|
99热精品在线观看
|
欧美国产亚洲精品久久久8v
|
欧美α欧美αv大片
|
国产精品视频九色porn
|
午夜影院日韩
|
麻豆成人在线播放
|
国产精品久久7
|
欧美怡红院视频一区二区三区
|
免费在线观看成人av
|
一区二区三区日韩欧美
|
欧美女激情福利
|
先锋影音久久
|
欧美激情国产精品
|
亚洲免费中文字幕
|
99国产精品久久久久久久成人热
|
久久大香伊蕉在人线观看热2
|
日韩视频在线你懂得
|
一区二区高清在线
|
日韩视频在线一区二区三区
|
欧美午夜a级限制福利片
|
亚洲一区二区少妇
|
99视频精品在线
|
久久久久www
|
欧美永久精品
|
亚洲影视九九影院在线观看
|
夜夜夜久久久
|
国模一区二区三区
|
国产一区二区三区在线观看免费
|
久久婷婷国产综合尤物精品
|
久久国产88
|
亚洲黄色性网站
|
欧美国产大片
|
中文av一区特黄
|
久久久欧美精品sm网站
|
性做久久久久久久免费看
|
亚洲自拍另类
|
亚洲精品一区二区三区不
|
亚洲国产高清一区
|
91久久精品www人人做人人爽
|
欧美高清免费
|
亚洲精品1区2区
|
亚洲免费在线电影
|
久久高清国产
|
欧美伦理视频网站
|
欧美调教视频
|
欧美国产一区二区
|
精品成人一区
|
亚洲欧美清纯在线制服
|
久久综合久色欧美综合狠狠
|
美国十次成人
|
国产欧美日韩中文字幕在线
|
国产精品一区二区视频
|
亚洲美女性视频
|
亚洲欧美国产不卡
|
欧美h视频在线
|
红桃视频成人
|
欧美在线一区二区三区
|
亚洲一区二区三区四区视频
|
嫩模写真一区二区三区三州
|
亚洲激情网址
|
久久se精品一区二区
|
免费日韩av片
|
久久婷婷麻豆
|
尤物在线精品
|
久久久亚洲综合
|
亚洲在线视频一区
|
国产精品一区二区你懂得
|
99热免费精品
|
一区二区三区四区蜜桃
|
欧美国产精品久久
|
国产香蕉97碰碰久久人人
|
欧美亚洲综合另类
|
亚洲精品视频免费
|
欧美黄色aaaa
|
亚洲精品一区久久久久久
|
在线欧美不卡
|
亚洲电影欧美电影有声小说
|
久久精品国亚洲
|
亚洲欧洲在线播放
|
亚洲一区二区三区四区五区午夜
|
国产精品一二三视频
|
欧美一区日本一区韩国一区
|
亚洲欧美欧美一区二区三区
|
亚洲福利在线观看
|
欧美国产丝袜视频
|
欧美日韩精选
|
午夜欧美不卡精品aaaaa
|
久久久国产精品亚洲一区
|
亚洲精品小视频在线观看
|
亚洲午夜激情网站
|
亚洲国产日韩欧美在线动漫
|
亚洲国产精品成人精品
|
欧美国产日韩二区
|