开发自动化系统管理脚本(shell)

简介:

[背景]因想自动化来设置一些系统的配置,所以就写了一个小工具来满足自己的需求,

此工具具有如下功能:

(一)用户管理
1、修改root密码
2、删除用户帐号
3、添加用户帐号
(二)服务管理
1、开启服务
2、关闭服务
(三)防火墙/ssh认证管理
1、关闭默认防火墙,开启自定防火墙脚本(自定义脚本分为:公司环境下,以及互联网环境下)
2、修改ssh认证配置文件(采用publickey认证登录)
(四)自动设置
1、自动添加"互联网环境下"的防火墙 
2、采用publickey认证登录
(五)重启功能

所有这些功能都是以函数块做的,大家可以根据自己的需求做出相应的调整以适应自己公司的需求.

开发os:centos5.2
脚本:shell
功能已经基本测试OK,不过。还需要其他朋友挖Bug...

贴些图让大家更直观点:

 

 

 

 AutoSetSystem.sh


 
 
  1. #!/bin/bash 
  2. ######################################################################### 
  3. # File:         autosetsystem.sh 
  4. # Description:   
  5. # Language:     GNU Bourne-Again SHell 
  6. # Version:  1.1 
  7. Date:     2010-9-6 
  8. # WWW:      http://5ydycm.blog.51cto.com/
  9. ############################################################################### 
  10.  
  11. zzj_key='zzjkey' 
  12.  
  13. general_iptable_content="/sbin/iptables -F\n/sbin/depmod -a\n/sbin/modprobe ip_tables\n/sbin/modprobe ip_conntrack\n/sbin/iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT\n/sbin/iptables -A INPUT -i lo -j ACCEPT\n/sbin/iptables -P INPUT DROP" 
  14. public_ip="ip1 ip2 ip3" 
  15. private_ip="ip1 ip2 ip3 ip4" 
  16.  
  17. MainMenu() 
  18. clear 
  19. echo 
  20. echo "-------------------------------------------------------------------------" 
  21. tput cup 2 
  22. time=`date +"%Y-%m-%d"
  23. echo -ne "USER:$USER\tHOST:$HOSTNAME\tdate:$time" 
  24. echo 
  25. tput cup 3 
  26. echo  "-------------------------------------------------------------------------" 
  27. tput cup 4 20 
  28. echo -e "1:Manage User;" 
  29. tput cup 5 20 
  30. echo -e "2:Manage Services;" 
  31. tput cup 6 20 
  32. echo -e "3:Manage Firewall/SSH;" 
  33. tput cup 7 20 
  34. tput bold 
  35. echo -e "4:AutoSet;" 
  36. tput sgr0 
  37. tput cup 8 20 
  38. echo -e "5:Reboot;" 
  39. tput cup 9 20 
  40. echo -e "6:Quit;" 
  41. tput cup 10  
  42. echo  "--------------------------------------------------------------------------" 
  43. echo -n "You choice [1,2,3,4,5,6]:" 
  44. read AA 
  45. case $AA in 
  46. 1) 
  47. ManageUser 
  48. ;; 
  49. 2) 
  50. ManageServices 
  51. ;; 
  52. 3) 
  53. ManageFirewall 
  54. ;; 
  55. 4) 
  56. AutoSet 
  57. ;; 
  58. 5) 
  59. echo -n "Are you sure reboot system[y|n]?" 
  60. read answer 
  61. if [ $answer == "y" ];then 
  62. shutdown -r now 
  63. exit 0 
  64. else 
  65. echo -n "You forego reboot system!" 
  66. sleep 2 
  67. fi 
  68. ;; 
  69. *) 
  70. Quit 
  71. ;; 
  72. esac 
  73. AutoSet(){ 
  74. EnableOutFirewall 
  75. echo -e "\n" 
  76. PublickeyAuthenticate 
  77.  
  78. AddUser(){ 
  79. echo -n "Please input add user name:" 
  80. read username 
  81. (awk -F':' '{print $1}' /etc/passwd|grep ^$username$) && (echo "Add user faild because user exists!"&&sleep 2)||(useradd $username&&passwd $username&&sleep 2)} 
  82.  
  83. DeleteUser(){ 
  84. echo -n "Please input delete user name:" 
  85. read username 
  86. echo -n "Are you sure delete $username[y|n]?" 
  87. read answer 
  88. if [ $answer == "y" ];then 
  89. (awk -F':' '{print $1}' /etc/passwd|grep ^$username$)&&(userdel $username&&echo "user delete sucessfull!"&&sleep 2)||(echo "Delete user faild because user account not exists!"&&sleep 2) 
  90. else 
  91. echo -n "You forego delete $username account!" 
  92. sleep 2 
  93. fi 
  94.  
  95. ModifyRootpwd(){ 
  96. echo -n "Are you sure modify root password[y|n]?" 
  97. read answer 
  98. if [ $answer == "y" ];then 
  99. passwd root 
  100. sleep 2 
  101. else 
  102. echo -n "You forego modify root password!" 
  103. sleep 2 
  104. fi 
  105.  
  106. ViewUser(){ 
  107. more /etc/passwd 
  108. tput bold  
  109. echo "Wait 8 sec!" 
  110. sleep 8  
  111. tput sgr0  
  112.  
  113. ManageUserMenu(){ 
  114. clear 
  115. echo 
  116. echo "-------------------------------------------------------------------------" 
  117. tput cup 2 
  118. time=`date +"%Y-%m-%d"
  119. echo -ne "USER:$USER\tHOST:$HOSTNAME\tdate:$time" 
  120. echo 
  121. tput cup 3 
  122. echo  "-------------------------------------------------------------------------" 
  123. tput cup 4 20 
  124. echo -e "1:Add User;" 
  125. tput cup 5 20 
  126. echo -e "2:Delete User;" 
  127. tput cup 6 20 
  128. echo -e "3:Modify root password;" 
  129. tput cup 7 20 
  130. echo -e "4:View User;" 
  131. tput cup 8 20 
  132. echo -e "5:Quit;" 
  133. tput cup 9  
  134. echo  "--------------------------------------------------------------------------" 
  135. echo -n "You choice [1,2,3,4,5]:" 
  136. read BB  
  137. case $BB in 
  138. 1) 
  139. AddUser 
  140. ;; 
  141. 2) 
  142. DeleteUser 
  143. ;; 
  144. 3) 
  145. ModifyRootpwd 
  146. ;; 
  147. 4) 
  148. ViewUser 
  149. ;; 
  150. *) 
  151. echo "Quit" 
  152. break 
  153. ;; 
  154. esac 
  155.  
  156. EnableServices(){ 
  157. echo -n "Please input enable service name:" 
  158. read servicename 
  159. echo -n "Are you sure enable $servicename[y|n]?" 
  160. read answer 
  161. if [ $answer == "y" ];then 
  162. (chkconfig --list|awk '{print $1}'|grep ^$servicename$)&&(chkconfig --level 345 $servicename on&&echo "service enable sucessfull!"&&sleep 2)||(echo "service enable faild because service not exists!"&&sleep 2) 
  163. else 
  164. echo -n "You forego enable $servicename!" 
  165. sleep 2 
  166. fi 
  167.  
  168. DisableServices(){ 
  169. echo -n "Please input disable service name:" 
  170. read servicename 
  171. echo -n "Are you sure disable $servicename[y|n]?" 
  172. read answer 
  173. if [ $answer == "y" ];then 
  174. (chkconfig --list|awk '{print $1}'|grep ^$servicename$)&&(chkconfig --level 345 $servicename off&&echo "service diable sucessfull!"&&sleep 2)||(echo "service disable faild because service not exists!"&&sleep 2) 
  175. else 
  176. echo -n "You forego disable $servicename!" 
  177. sleep 2 
  178. fi 
  179.  
  180. ViewServices(){ 
  181. chkconfig --list 
  182. tput bold 
  183. echo "Wait 8 sec!" 
  184. sleep 8 
  185. tput sgr0 
  186.  
  187. ManageServicesMenu(){ 
  188. clear 
  189. echo 
  190. echo "-------------------------------------------------------------------------" 
  191. tput cup 2 
  192. time=`date +"%Y-%m-%d"
  193. echo -ne "USER:$USER\tHOST:$HOSTNAME\tdate:$time" 
  194. echo 
  195. tput cup 3 
  196. echo  "-------------------------------------------------------------------------" 
  197. tput cup 4 20 
  198. echo -e "1:Enable Services;" 
  199. tput cup 5 20 
  200. echo -e "2:Disable Services;" 
  201. tput cup 6 20 
  202. echo -e "3:View Services;" 
  203. tput cup 7 20 
  204. echo -e "4:Quit;" 
  205. tput cup 8  
  206. echo  "--------------------------------------------------------------------------" 
  207. echo -n "You choice [1,2,3,4]:" 
  208. read CC  
  209. case $CC in 
  210. 1) 
  211. EnableServices 
  212. ;; 
  213. 2) 
  214. DisableServices 
  215. ;; 
  216. 3) 
  217. ViewServices 
  218. ;; 
  219. *) 
  220. echo "Quit" 
  221. break 
  222. ;; 
  223. esac 
  224.  
  225. EnableCompanyFirewall(){ 
  226. echo -n "Are you sure enable firewall[y|n]?" 
  227. read answer 
  228. if [ $answer == "y" ];then 
  229. if [ ! -d /scripts ];then 
  230. mkdir /scripts 
  231. fi 
  232. echo -e $general_iptable_content >/scripts/start_firewall.sh 
  233. for ip in $private_ip 
  234. do 
  235. echo "/sbin/iptables -A INPUT -s $ip -p tcp --dport 22 -j ACCEPT" >>/scripts/start_firewall.sh 
  236. done 
  237. echo "sh /scripts/start_firewall.sh" >>/etc/rc.local 
  238. chmod +x /scripts/start_firewall.sh 
  239. sh /scripts/start_firewall.sh 
  240. echo "Enable Firewall sucessful!" 
  241. sleep 3 
  242. else 
  243. echo -n "You forego enable firewall!" 
  244. sleep 2 
  245. fi 
  246. EnableOutFirewall(){ 
  247. echo -n "Are you sure enable firewall[y|n]?" 
  248. read answer 
  249. if [ $answer == "y" ];then 
  250. if [ ! -d /scripts ];then 
  251. mkdir /scripts 
  252. fi 
  253. echo -e $general_iptable_content >/scripts/start_firewall.sh 
  254. for ip in $public_ip 
  255. do 
  256. echo "/sbin/iptables -A INPUT -s $ip -p tcp --dport 22 -j ACCEPT" >>/scripts/start_firewall.sh 
  257. done 
  258. echo "sh /scripts/start_firewall.sh" >>/etc/rc.local 
  259. chmod +x /scripts/start_firewall.sh 
  260. sh /scripts/start_firewall.sh 
  261. echo "Enable Firewall sucessful!" 
  262. sleep 3 
  263. else 
  264. echo -n "You forego enable firewall!" 
  265. sleep 2 
  266. fi 
  267.  
  268. FirewallEnvMenu(){ 
  269. clear 
  270. echo 
  271. echo "-------------------------------------------------------------------------" 
  272. tput cup 2 
  273. time=`date +"%Y-%m-%d"
  274. echo -ne "USER:$USER\tHOST:$HOSTNAME\tdate:$time" 
  275. echo 
  276. tput cup 3 
  277. echo  "-------------------------------------------------------------------------" 
  278. tput cup 4 20 
  279. echo -e "1:Enable Company Env Firewall;" 
  280. tput cup 5 20 
  281. echo -e "2:Enable Out Env Firewall;" 
  282. tput cup 6 20 
  283. echo -e "3:Quit;" 
  284. tput cup 7  
  285. echo  "--------------------------------------------------------------------------" 
  286. echo -n "You choice [1,2,3]:" 
  287. read EE  
  288. case $EE in 
  289. 1) 
  290. EnableCompanyFirewall 
  291. ;; 
  292. 2) 
  293. EnableOutFirewall 
  294. ;; 
  295. *) 
  296. echo "Quit" 
  297. break 
  298. ;; 
  299. esac 
  300. CustomizeFirewall() 
  301. while true 
  302. do 
  303. FirewallEnvMenu 
  304. done 
  305. PublickeyAuthenticate() 
  306. echo -n "Are you sure enable publickey auth[y|n]?" 
  307. read answer 
  308. if [ $answer == "y" ];then 
  309. if [ ! -d /root/.ssh ];then 
  310. mkdir /root/.ssh 
  311. fi 
  312. touch /root/.ssh/authorized_keys 
  313. echo $zzj_key >/root/.ssh/authorized_keys 
  314. cp /etc/ssh/sshd_config /tmp/sshd_config_bak 
  315. sed 's/^PasswordAuthentication yes$/PasswordAuthentication no/' /etc/ssh/sshd_config > /etc/ssh/tmp_sshd_config 
  316. sed 's/^#PubkeyAuthentication yes$/PubkeyAuthentication yes/' /etc/ssh/tmp_sshd_config > /etc/ssh/tmp1_sshd_config 
  317. sed 's/^#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/tmp1_sshd_config > /etc/ssh/tmp_sshd_config 
  318. rm -fr /etc/ssh/sshd_config 
  319. rm -fr /etc/ssh/tmp1_sshd_config 
  320. mv /etc/ssh/tmp_sshd_config /etc/ssh/sshd_config 
  321. kill -HUP `cat /var/run/sshd.pid` 
  322. echo "Please use public key try login agains!" 
  323. sleep 5  
  324. else 
  325. echo -n "You forego publickey auth!" 
  326. sleep 2 
  327. fi 
  328.  
  329. ManagerFirewallMenu(){ 
  330. clear 
  331. echo 
  332. echo "-------------------------------------------------------------------------" 
  333. tput cup 2 
  334. time=`date +"%Y-%m-%d"
  335. echo -ne "USER:$USER\tHOST:$HOSTNAME\tdate:$time" 
  336. echo 
  337. tput cup 3 
  338. echo  "-------------------------------------------------------------------------" 
  339. tput cup 4 20 
  340. echo -e "1:Enable Customize Firewall;" 
  341. tput cup 5 20 
  342. echo -e "2:Enable Publickey Authenticate;" 
  343. tput cup 6 20 
  344. echo -e "3:Quit;" 
  345. tput cup 7  
  346. echo  "--------------------------------------------------------------------------" 
  347. echo -n "You choice [1,2,3]:" 
  348. read DD  
  349. case $DD in 
  350. 1) 
  351. CustomizeFirewall 
  352. ;; 
  353. 2) 
  354. PublickeyAuthenticate 
  355. ;; 
  356. *) 
  357. echo "Quit" 
  358. break 
  359. ;; 
  360. esac 
  361.  
  362. ManageUser () 
  363. while true 
  364. do 
  365. ManageUserMenu 
  366. done 
  367.  
  368.  
  369. ManageServices(){ 
  370. while true 
  371. do 
  372. ManageServicesMenu 
  373. done 
  374. ManageFirewall() 
  375. while true 
  376. do 
  377. ManagerFirewallMenu 
  378. done 
  379.  
  380. Quit() 
  381. echo "Quit" 
  382. break 
  383.  
  384. while true  
  385. do 
  386. MainMenu 
  387. done 

 


本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/389631,如需转载请自行联系原作者

相关文章
|
人工智能 自然语言处理 算法
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
1698 0
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
|
传感器 人工智能 监控
通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例
通义灵码智能体模式具备语义理解、任务闭环与环境感知能力,结合云效DevOps实现CI/CD异常修复、测试覆盖与配置合规检查,大幅提升研发效率与质量。
545 0
|
9月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
258 0
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
842 2
|
11月前
|
传感器 人工智能 JavaScript
Playwright实战:写UI自动化脚本,速度直接起飞
简介: 测试工程师老王因UI自动化问题深夜奋战,反映出传统测试工具的局限性。微软开源的Playwright凭借智能等待、跨域操作、移动端模拟与网络拦截等强大功能,正迅速取代Selenium,成为新一代自动化测试标准。其稳定高效的设计显著降低维护成本,助力企业构建高质量测试流程。
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文详细讲解了Java开发者如何基于Spring AI Alibaba框架玩转MCP(Model Context Protocol),涵盖基础概念、快速体验、服务发布与调用等内容。重点包括将Spring应用发布为MCP Server(支持stdio与SSE模式)、开发MCP Client调用服务,以及在Spring AI Alibaba的OpenManus中使用MCP增强工具能力。通过实际示例,如天气查询与百度地图路线规划,展示了MCP在AI应用中的强大作用。最后总结了MCP对AI开发的意义及其在Spring AI中的实现价值。
3244 9
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
数据采集 消息中间件 API
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。