用脚本来讲一个技术生活的故事 (r9笔记第32天)

对于生活,用文字表达是一种非常好的方式,作为技术人,我决定使用一个脚本来映射技术生活中的一些小故事,也是在今天突然想到的。 对的,你没有看错,就是下面这个命令。但凡接触过Linux系统,这个命令还是很熟悉的,不熟悉也没有关系,就是查看服务器的磁盘空间。 df -h 我们像对待艺术品一样围着这个命令,认真的看看它,为什么叫df,想必是Disk Filesystem的意思吧,而为什么是-h选项,你还真想对了,其实-k -g等选项 -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。 -k 以k字节为单位显示。 -i 显示i节点信息,而不是磁盘块。 -t 显示各指定类型的文件系统的磁盘空间使用情况。 -x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。 -T 显示文件系统类型。 当然我们的重点不是这里,我们的工作需要查看服务器的磁盘空间情况,所以我们登录服务器,然后在服务器段运行这个命令就可以看到了。 后来,网络进行了隔离,我们不能直接连接到这个服务器了,我们有了中控机,堡垒机,需要输入token,动态口令等。登录之后我们才有权限连接到服务器,当然我们使用的还是df -h的命令。 每天登录到服务器多次,几十次,上百次,发现真是一件体力活,能不能简单一些,我们发现可以使用ssh来简单实现,ssh登录后,直接发送df -h的命令即可。 就像下面的形式: ssh 10.127.133.45 "df -h" 一下子感觉我们的生活就解放了很多,配置了网络信任,我们不用每次都苦逼的输入密码,每次输入各种火星文密码也够折腾的。原来生活可以这么简单。 后来工作任务慢慢重了,交到手头的服务器多了,比如我们就说有2台。这下好了,我们只需要对脚本做一些简单的改进就可以了,比如下面的方式。 ssh 10.127.133.45 "df -h" ssh 10.127.133.46 "df -h" 这样确实能够实现我们的需求,而且本身来说也没有什么问题,如果严格来看,就是可以重构一下,硬编码的痕迹太重了。这个脚本让人看到还不得笑话。 于是我们改进一下: 我们写了一个shell脚本如下,当然还用到了function function ssh_df_h { ssh $1 "df -h" } ssh_df_h 10.127.133.45 ssh_df_h 10.127.133.46 这样来看这个功能就简化了一些,说实话简化了吗?逻辑上看起来是简化了,好吧,这个也不是重点,当然看起来这个脚本还不错,已经做了解耦和。 后来发现脚本的功能是不是还能够改进,如果我要做其它的操作是不是还要写一个差不多的脚本,重复造轮子的活看起来也是在太没有技术含量了。 我们继续改进,继续做了解耦和。 function ssh_cmd { ssh $1 "$2" } ssh_cmd 10.127.133.45 "df -h" ssh_cmd 10.127.133.46 "df -h" 这个时候脚本看起来更加灵活了。你也对服务器列表做了一层定制,让这个脚本看起来更加高大上。看起来工作还是挺完美的了。我们自己用了下感觉还不错,然后就推广到更多的部门去使用。这个对我们也是蛮有成就感的。 然后没几天就出了一个问题,究其原因就是脚本的调用方式如下: ssh_cmd 10.127.133.45 "rm xxxx" 啊,怎么运行了一个删除命令,这个时候服务器上的文件都被删了。 然后脚本完全禁用,调整了网络,这个时候我们在服务器上只df -h都很难了,而且设定了更多更加严格的安全策略,可以堪称史上最xxxx的。 突然我们发现竟然一夜回到解放前。这会不会是一个循环?

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2016-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端vue

Vue自定义弹窗组件(一)npm包管理

npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 6000...

32230
来自专栏程序员八阿哥

王老板Python面试(1):HTTP中GET与POST的区别?

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

12010
来自专栏王清培的专栏

RabbitMQ 高可用集群搭建及电商平台使用经验总结

面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue poli...

780100
来自专栏北京马哥教育

原创投稿 | Linux操作系统下的文件系统

? 乐乐快跑,马哥门徒,马哥教育原创作者联盟成员,专注于运维领域知识分享,强于知识体系构建。 操作系统我们粗略的可以分为两层即内核层和shell层,内核层下面...

38280
来自专栏美团技术团队

分布式会话跟踪系统架构设计与实践

美团点评技术沙龙由美团点评技术团队主办,每月一期。每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 目前沙龙会分别在北...

45060
来自专栏区块链

黑客网络攻击是通过怎样的手段进行

黑客可能会利用下列的公开协议或工具,收集驻留在网络系统中的各个主机系统的相关信息: (1)TraceRoute程序。 能够用该程序获得到达目标主机所要经过的网络...

22090
来自专栏京东技术

99%的人都理解错了HTTP中GET与POST的区别

22120
来自专栏Web 开发

大内存的机子的新玩具-FancyCache

自从这个学期开始,DDR3内存进入了白菜价时期,4G 1333笔记本的都只需要130RMB左右,果断入手两条

20300
来自专栏数据和云

【全局出发,追根溯源】一则集群故障案例分析

作者简介: ? 董冰,混迹DBA圈子十余载的闲云野鹤,曾服务过政府行业、银行数据中心、互联网游戏上市公司,辗转蛰伏于中国铁塔,励志做一个社会主义的螺丝钉。 故...

36860
来自专栏工科狗和生物喵

如何构建局域网极速云盘(速度神快)--局域网内共享文件详解

正文之前 因为我是两部电脑工作,一部Windows,一部Mac,windows自带系统天赋,很多东西子在windows下安装简直如同吃饭喝水一般简单,但是在Ma...

57060

扫码关注云+社区

领取腾讯云代金券