用于自动化基本社区管理任务的 5 个脚本

如果你必须做某事三次,尝试自动化它。
129 位读者喜欢这篇文章。
shapes of people symbols

Opensource.com

我之前写过关于社区经理是做什么的文章,如果你问十个社区经理,你会得到 12 个不同的答案。 然而,在大多数情况下,你只是在任何特定时刻做社区需要你做的事情。 而且其中很多可能是重复性的。

当我还是系统管理员的时候,我有一个规则:如果我必须做某事三次,我会尝试自动化它。 当然,现在有了像 Ansible 这样出色的工具,自动化已经成为一门完整的科学。

我每天或每周所做的一些事情包括在几个地方查找一些信息,然后生成该信息的摘要或报告以发布到其他地方。 这样的任务是自动化的完美候选对象。 这些都不是什么高深的学问,但是当我与同事分享这些脚本时,至少其中一个总是会被证明是有用的。

在 GitHub 上,我有几个每周都会使用的脚本。 它们都不复杂,但每次都能为我节省几分钟时间。 其中一些是用 Perl 编写的,因为我快 50 岁了。 其中一些是用 Python 编写的,因为几年前,我决定需要学习 Python。 这里是一个概述

tshirts.py

这个简单的脚本会获取你为一个活动订购的 T 恤数量,并告诉你尺寸分布应该是怎样的。 它将它们分布在正态曲线(也称为钟形曲线)上,根据我的经验,这与普通会议观众实际需要的尺寸非常吻合。 如果你在美国使用它,你可能需要调整脚本使其稍大一些,如果你在欧洲使用它,则稍小一些。 YMMV(你的里程可能会有所不同)。

用法

[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

这个脚本为我提供了我关心的 Twitter 账号的关注者数量。

这个脚本只有 14 行代码,虽然不令人兴奋,但它可以为我节省大约十分钟的加载网页和查找数字的时间。

你需要编辑 feeds 数组来添加你关心的帐户

feeds = [
        'centosproject',
        'centos'
        ];

注意:如果你在英语国家以外的国家/地区运行它,它可能无法正常工作,因为它只是一个简单的屏幕抓取脚本,它读取 HTML 并查找其中埋藏的特定信息。 因此,当输出使用不同的语言时,正则表达式将不匹配。

用法

[rbowen@sasha:community-tools/scripts]$ ./followers.py                                                                                                                                                                           
centosproject: 11,479 Followers
centos: 18,155 Followers

get_meetups

这个脚本属于另一类——API 脚本。 这个特定的脚本使用 meetup.com API 在特定区域和时间范围内查找关于特定主题的聚会,以便我可以将它们报告给我的社区。 你依赖的许多服务都提供 API,以便你的脚本可以查找信息,而无需手动浏览网页。 学习如何使用这些 API 可能令人沮丧且耗时,但你最终会获得可以为你节省大量时间的技能。

免责声明:meetup.com 在 2019 年 8 月更改了他们的 API,我还没有将此脚本更新到新的 API,所以它目前实际上无法工作。 请关注此仓库,了解未来几周内的修复版本。

centos-announcements.pl

这个脚本相当复杂,并且非常特定于我的用例,但你可能也有类似的情况。 这个脚本查看邮件列表存档——在本例中是 centos-announce 邮件列表——并查找特定格式的消息,然后构建这些消息的报告。 报告有几种不同的格式——一种用于我的每月新闻通讯,另一种用于(通过 Hootsuite)为 Twitter 安排消息。

我使用 Hootsuite 来安排 Twitter 的内容,他们有一种方便的 CSV(逗号分隔值)格式,可以让你一次性批量安排整整一周的推文。 从各种数据源(即邮件列表、博客、其他网页)自动生成 CSV 可以为你节省大量时间。 但请注意,这可能只应用于初稿,然后你自行检查和编辑,这样你就不会最终自动发布一些你不想发布的内容。

reporting.pl

这个脚本也相当特定于我的特定需求,但概念本身是通用的。 我每月向 CentOS SIG(特别兴趣小组)发送邮件,这些小组计划在该月报告。 这个脚本只是告诉我这个月是哪些 SIG,并编写需要发送给他们的电子邮件。

然而,它实际上并没有发送该电子邮件,原因有两个。 一是,我可能希望在这些邮件发送出去之前对其进行编辑。 二是,虽然以前发送电子邮件的脚本效果很好,但如今,它们很可能最终被过滤为垃圾邮件。

结论

该仓库中还有一些其他脚本,或多或少特定于我的特定需求,但我希望至少其中一个对你有用,并且那里的各种内容能激励你自动化你自己的某些东西。 我也很想看看你方便的自动化脚本仓库; 在评论中链接到它们!

接下来阅读
Rich Bowen
Rich 是 AWS 的开源倡导者。 他是 Apache 软件基金会的董事、成员和会议副总裁。

5 条评论

至少其中一个脚本是用 Perl 编写的,而不是 Python ;-)

作为一名营销人员,用于检查 Twitter 关注者的 Python 脚本让我垂涎三尺。 迫不及待想投入使用。 感谢你的分享 Rich :)

这是更新到 python 3 的 diff

diff -u followers.py_old followers.py
--- followers.py_old 2020-03-24 11:28:55.215847804 +0000
+++ followers.py 2020-03-24 11:30:24.553192229 +0000
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3

# 你有多少关注者?
import urllib.request
@@ -7,9 +7,8 @@
feeds = [
'centosproject',
'centos'
- ];
+ ]
for feed in feeds
response = urllib.request.urlopen('https://twitter.com/' + feed)
html = response.read().decode('utf-8')
- print ( feed + ': ' + re.search('.*?([\d,]+ Followers).*', html).group(1) )
-
+ print (feed + ': ' + re.search(r'.*?([\d,]+ Followers).*', html).group(1))

回复 Collin Davis 的 “作为一名营销人员,Python”

很好的信息...谢谢你的分享

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.