用于基本社區(qū)管理任務(wù)自動(dòng)化的 5 個(gè) Python 腳本
如果某些事情不得不重復(fù)做三遍,嘗試使其自動(dòng)化。
我 之前寫過關(guān)于社區(qū)管理員的工作,如果你問 10 位社區(qū)管理員,你會(huì)得到 12 個(gè)不同的答案。不過,大多數(shù)情況下,你做的是社區(qū)需要你在任何特定時(shí)刻做的事情。而且很多事情可能是重復(fù)的。
當(dāng)我還是系統(tǒng)管理員時(shí),我遵循一個(gè)規(guī)則:如果某些事必須做三遍,我會(huì)嘗試使其自動(dòng)化。當(dāng)然,如今,使用諸如 Ansible 這樣的強(qiáng)大工具,就有了一整套科學(xué)的方法。
我每天或每周要做的一些事情涉及在一些地方查找內(nèi)容,然后生成信息的摘要或報(bào)告,然后發(fā)布到別處。這樣的任務(wù)是自動(dòng)化的理想選擇。這些并不是什么 難事,當(dāng)我與同事共享其中一些腳本時(shí),總是至少有一個(gè)能證明這是有用的。
在 GitHub 上,我有幾個(gè)每周都要使用的腳本。它們都不是很復(fù)雜,但每次都為我節(jié)省幾分鐘。其中一些是用 Perl 寫的,因?yàn)槲铱?50 歲了(這些是我早些年寫的)。有些是用 Python 寫的,因?yàn)閹啄昵埃覜Q定要學(xué)習(xí) Python。
以下是概述:
tshirts.py
這個(gè)簡單的 tshirts.py 腳本會(huì)根據(jù)你要定制的活動(dòng) T 恤的數(shù)量,然后告訴你尺寸分布是什么。它將這些尺寸分布在一條正態(tài)曲線(也稱為 “鐘形曲線”)上,以我的經(jīng)驗(yàn),這和一個(gè)正常的會(huì)議觀眾的實(shí)際需求非常吻合。如果在美國使用,則可能需要將腳本中的值調(diào)整的稍大一些;如果在歐洲使用,則可能需要將腳本中的值稍稍縮小一些。你的情況也許不同。
用法:
[rbowen@sasha:community-tools/scripts]$ ./tshirts.py
How many shirts? 300
For a total of 300 shirts, order:
30.0 small
72.0 medium
96.0 large
72.0 xl
30.0 2xl
followers.py
followers.py 腳本為我提供了我關(guān)心的 Twitter 賬號(hào)的關(guān)注者數(shù)量。
該腳本只有 14 行,沒什么復(fù)雜的,但是它可能節(jié)省我十分鐘的加載網(wǎng)頁和查找數(shù)字的時(shí)間。
你需要編輯 feed
數(shù)組以添加你關(guān)心的帳戶:
feeds = [
'centosproject',
'centos'
];
注意:如果你在英語國家以外的地方運(yùn)行它,則可能無法正常工作,因?yàn)樗皇且粋€(gè)簡單的屏幕抓取腳本,它讀取 HTML 并查找其中包含的特定信息。因此,當(dāng)輸出使用其他語言時(shí),正則表達(dá)式可能不匹配。
用法:
[rbowen@sasha:community-tools/scripts]$ ./followers.py
centosproject: 11,479 Followers
centos: 18,155 Followers
get_meetups
get_meetups 腳本S 另一種類別的腳本 —— API腳本。這個(gè)特定的腳本使用 meetup.com 網(wǎng)站的 API 來尋找在特定區(qū)域和時(shí)間范圍內(nèi)特定主題的聚會(huì),以便我可以將它報(bào)告給我的社區(qū)。你所依賴的許多服務(wù)都提供了 API,因此你的腳本可以查找信息,而無需手動(dòng)查找網(wǎng)頁。學(xué)習(xí)如何使用這些 API 既令人沮喪又耗時(shí),但是最終將獲得可以節(jié)省大量時(shí)間的技能。
免責(zé)聲明:meetup.com 已于 2019 年 8 月更改了他們的 API,我還沒有將這個(gè)腳本更新到新的API,所以它現(xiàn)在實(shí)際上并沒有工作。在接下來的幾周內(nèi)請(qǐng)關(guān)注此版本的修復(fù)版本。
centos-announcements.pl
centos-announcements.pl 腳本要復(fù)雜得多,而且對(duì)我的用例來說非常特殊,但你可能有類似的情況。在本例中該腳本查看郵件列表存檔(centos-announce
郵件列表),并查找具有特定格式的郵件,然后生成這些郵件的報(bào)告。報(bào)告有兩種不同的格式:一種用于我的每月新聞通訊,另一種用于安排 Twitter 信息(借助于 Hootsuite)。
我使用 Hootsuite 為 Twitter 安排內(nèi)容,它們具有便捷的 CSV(逗號(hào)分隔值)格式,你可以一次批量安排整整一周的推文。從各種數(shù)據(jù)源(比如:郵件列表、博客、其他網(wǎng)頁)自動(dòng)生成 CSV 格式可以節(jié)省大量時(shí)間。但是請(qǐng)注意,這可能只應(yīng)該用于初稿,然后你可以對(duì)其進(jìn)行檢查和編輯,以便最終不會(huì)自動(dòng)發(fā)布你不想要內(nèi)容的推文。
reporting.pl
reporting.pl 腳本也是相當(dāng)特定的,以滿足我的特殊需求,但是這個(gè)概念本身是通用的。我每月向 CentOS SIG(特殊興趣小組)發(fā)送郵件,這些郵件計(jì)劃在給定的月份報(bào)告。該腳本只是告訴我本月有哪些 SIG,并記錄需要發(fā)送給他們的電子郵件。
但是,因以下兩個(gè)原因,實(shí)際上并未發(fā)送該電子郵件。第一,我希望在消息發(fā)送之前對(duì)其進(jìn)行編輯。第二,雖然發(fā)送電子郵件的腳本在過去很有效,但如今,很可能被當(dāng)做垃圾郵件而被過濾。
總結(jié)
在這個(gè)存儲(chǔ)庫中還有一些其他腳本,這些腳本或多或少是針對(duì)我的特定需求的,但是我希望其中至少有一個(gè)腳本對(duì)你有用,并且希望這些腳本的多樣性能激勵(lì)你去自動(dòng)化一些你自己的東西。