如何远程执行服务器上的脚本?给不懂技术的人用的

2016-02-29 13:23:10 +08:00
 zhangneww

Wordpress 服务器上的 MySQL 中一个表经常出错,需要 mysqlcheck 自动修复一下,写了脚本,为了方便,想让不懂技术的人也能使用。

想法一:服务器定时检查某个邮箱,由操作人员向这个邮箱发送修复命令,服务器收到邮件后执行脚本,并把执行结果通过邮件返回给操作人员。缺点是安装邮件系统,成本略高(各种成本)。

想法二:安装微信或 QQ 机器人。缺点是 web 协议不稳定。

想法三:写一个 web 接口,通过浏览器访问。缺点是对用户不友好,比较繁琐。

想法四:写一个手机软件,写几个 button ,通过 ssh 控制服务器执行命令。

求各位大神指导一下,有没有现成的工具,或者有没有更简单的办法,谢谢。

6337 次点击
所在节点    Linux
37 条回复
zjqzxc
2016-02-29 18:10:48 +08:00
新建一个用户,把需要执行的命令写到.bashrc 里面去
让不懂技术的人通过 ssh 登陆一下这个用户就行了

方法:比如装一个能记住密码的 ssh 客户端( secureCRT , xshell 之类)
新建一个脚本: putty user@ip -pw password

感觉最好的应该是弄个脚本每个几分钟检查下数据库有没有出错。。
lucifer4he
2016-02-29 18:20:29 +08:00
@Strikeactor 说得好,弄成定时执行。自己别人都不用手动了=。=
kn007
2016-02-29 18:24:47 +08:00
1.定时任务-修复表
2.降低 mysql oom 等级,被攻击时, mysql 不会宕机。
wph95
2016-02-29 18:31:40 +08:00
使用 crontab 解决问题
zhjits
2016-02-29 18:45:47 +08:00
https://landscape.canonical.com/ 这类服务器管理解决方案
akira
2016-02-29 19:25:52 +08:00
干嘛不做成定时执行?
wizardoz
2016-02-29 21:00:42 +08:00
我觉得 3 跟 4 结合最好,就是写一个 web 接口,但是不止有浏览器访问,应再做一个手机应用来访问 web 接口。
直接将 ssh 命令放在 app 里面,我觉得扩展性太差了,以后要改方案就得重新升级 app 才行。
zhangneww
2016-02-29 21:17:43 +08:00
@wizardoz https://github.com/Skarafaz/mercury/wiki 这个东西扩展性很好,可惜不能在 app 中编辑配置文件。
alect
2016-02-29 22:17:23 +08:00
最合适的应该是用 wp 自带的插件吧?
https://wordpress.org/plugins/wp-dbmanager/
太多插件可以选,这个给你。。
zhangneww
2016-02-29 22:23:00 +08:00
@alect 哈哈哈哈,机智如你,下次出问题试试能不能解决,谢谢,么么哒
likuku
2016-02-29 23:41:04 +08:00
@zhangneww [通常发生在网站被攻击的时候,导致 mysql 进程关闭,后来就表损坏了。] 你这表这么容易坏? MyISAM 吗? InnoDB 的一般在起点时会自动修复的,假若不能自动修复,手动也最多只能救援模式只读状态下导出数据了。
zhangneww
2016-02-29 23:53:21 +08:00
@likuku 感谢回复,我对 MySQL 了解不多,那个修复的命令也是 Google 来的。关于说的 InnoDB MyISAM 都不懂,具体损坏原因也不清楚,因为我也不知道黑客什么时候 d 我。
sunsol
2016-03-01 07:53:00 +08:00
想法一最简单也最实用。
无非就是出了问题自动修复并通知有关人士,
对于不懂的人只需告知某时间发生某事就行了,
如果让他选择哪个操作那还不如机器自己判断那个操作更合适,
只要把执行结果告知相关人士就行了。
想法 3.4 都要某人手动刷新,明显不合适。
想法 1.2 都比较通用,但明显电邮技术更成熟也更简单方便。
babytomas
2016-03-01 08:09:41 +08:00
既然是 MySQL 的问题,

难道不可以创建一个数据库用户远程连接吗?

如果觉得不安全,设置那个用户只可以有 xx 数据库的权限即可。
tomczhen
2016-03-01 11:19:59 +08:00
1.用 OpenResty 做个接口调用修复命令。
2.觉得上面那个麻烦了就装个 Jenkins ,建个构建任务来执行脚本,利用它提供的接口来执行任务。
3.邮件可以用支持 WebAPI 的投递方式,阿里云 /SengCloud 都可以,每个月的免费额度应该够用了。
4.App 方面可以用 Automate (安卓)试试,可以的话还能配合推送 /邮件来做成触发式。

PS :应该可以做成检测数据库状态来执行修复的,自动运行就好。当然,一定要有交互的话就没办法了。
Neveroldmilk
2016-03-01 22:33:29 +08:00
Mysql 数据天天损坏本身就有问题,如果这个问题不彻底解决,那是治标不治本。
likuku
2016-03-02 10:46:39 +08:00
@zhangneww MyISAM 和 InnoDB 都是 mysql 的表存储引擎,可以不正确滴比喻是 mysql 的 "文件系统"。

MyISAM 是最早的 mysql 表存储引擎,表级锁,单纯的读 or 写速度很快,但有时可能会莫名其妙得到不正确结果(跑的太快裤子都掉了),不支持事务, mysql 意外退出 /表很大 /负载很重 时损坏表,需要运行 myisamchk 等工具来检查和修表。

InnoDB 是现代化的 mysql 表存储引擎,行级锁,完整支持事务,在启动时会自检,若表损坏,会自动修复。

具体的相关信息,谷歌吧,大把。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/259866

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX