技术解析

如何远程执行服务器上的脚本?给不懂技术的人用的
0
2021-07-05 05:33:10
idczone

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

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

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

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

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

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


想法 4 最安全

发现了一个 SSH 工具,比较傻瓜了,,试了一下可以,但是没有返回结果,还要手动去文件系统中创建文件,还不能在软件中编辑配置文件。

不是 wordpress 么。后台写个插件呗。

http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe
google “ plink 远程执行”

https://zh.wikipedia.org/wiki/Expect

我是用 Expect 写的脚本,但是需要给不懂技术的人 **远程** 使用,就是连 ssh 都不懂的人。

以前有类似需求, nagios 监控 mysql ,发现需要修表时,自动执行修表脚本。

plink 。

想法 3 +弄个 hao123 那种导航

不安全啊

想法 4+跨平台版本,类似于那种一键执行 xxx 的感觉,局限于手机感觉不好
另外,这种操作感觉已经很危险了,你确定要让完全不懂运维的人用吗……
不如大概教一下远程连接,给他们专门弄个用户,证书登录,写好一个脚本,弄上类似于 suid 之类的标志位,限制权限后给他们直接跑……虽然他们不懂技术,但是仅仅登陆+执行,也不怎么难学吧

软件开发交流 群: 466678068

phpmyadmin 不好吗?

为啥 web 协议不稳定

方法 5:写一个 Web 界面,写几个按钮,通过 ssh 控制服务器执行命令。

经常出错难道不该查找一下原因么

+ 1

fabric
用户只要本地装一下 python 和 fabric 本地 run 一下就好

弄个 cron 自动执行?


通常发生在网站被攻击的时候,导致 mysql 进程关闭,后来就表损坏了。小站偶尔被 DDos 无解啊。

新建一个用户,把需要执行的命令写到.bashrc 里面去
让不懂技术的人通过 ssh 登陆一下这个用户就行了
方法:比如装一个能记住密码的 ssh 客户端( secureCRT , xshell 之类)
新建一个脚本: putty [email&-pw password
感觉最好的应该是弄个脚本每个几分钟检查下数据库有没有出错。。

说得好,弄成定时执行。自己别人都不用手动了=。=

1.定时任务-修复表
2.降低 mysql oom 等级,被攻击时, mysql 不会宕机。

使用 crontab 解决问题

https://landscape.canonical.com/ 这类服务器管理解决方案

干嘛不做成定时执行?

我觉得 3 跟 4 结合最好,就是写一个 web 接口,但是不止有浏览器访问,应再做一个手机应用来访问 web 接口。
直接将 ssh 命令放在 app 里面,我觉得扩展性太差了,以后要改方案就得重新升级 app 才行。

https://github.com/Skarafaz/mercury/wiki 这个东西扩展性很好,可惜不能在 app 中编辑配置文件。

最合适的应该是用 wp 自带的插件吧?
https://wordpress.org/plugins/wp-dbmanager/
太多插件可以选,这个给你。。

哈哈哈哈,机智如你,下次出问题试试能不能解决,谢谢,么么哒

[通常发生在网站被攻击的时候,导致 mysql 进程关闭,后来就表损坏了。] 你这表这么容易坏? MyISAM 吗? InnoDB 的一般在起点时会自动修复的,假若不能自动修复,手动也最多只能救援模式只读状态下导出数据了。

感谢回复,我对 MySQL 了解不多,那个修复的命令也是 Google 来的。关于说的 InnoDB MyISAM 都不懂,具体损坏原因也不清楚,因为我也不知道黑客什么时候 d 我。

想法一最简单也最实用。
无非就是出了问题自动修复并通知有关人士,
对于不懂的人只需告知某时间发生某事就行了,
如果让他选择哪个操作那还不如机器自己判断那个操作更合适,
只要把执行结果告知相关人士就行了。
想法 3.4 都要某人手动刷新,明显不合适。
想法 1.2 都比较通用,但明显电邮技术更成熟也更简单方便。

既然是 MySQL 的问题,
难道不可以创建一个数据库用户远程连接吗?
如果觉得不安全,设置那个用户只可以有 xx 数据库的权限即可。

1.用 OpenResty 做个接口调用修复命令。
2.觉得上面那个麻烦了就装个 Jenkins ,建个构建任务来执行脚本,利用它提供的接口来执行任务。
3.邮件可以用支持 WebAPI 的投递方式,阿里云 /SengCloud 都可以,每个月的免费额度应该够用了。
4.App 方面可以用 Automate (安卓)试试,可以的话还能配合推送 /邮件来做成触发式。
PS :应该可以做成检测数据库状态来执行修复的,自动运行就好。当然,一定要有交互的话就没办法了。

Mysql 数据天天损坏本身就有问题,如果这个问题不彻底解决,那是治标不治本。

MyISAM 和 InnoDB 都是 mysql 的表存储引擎,可以不正确滴比喻是 mysql 的 "文件系统"。
MyISAM 是最早的 mysql 表存储引擎,表级锁,单纯的读 or 写速度很快,但有时可能会莫名其妙得到不正确结果(跑的太快裤子都掉了),不支持事务, mysql 意外退出 /表很大 /负载很重 时损坏表,需要运行 myisamchk 等工具来检查和修表。
InnoDB 是现代化的 mysql 表存储引擎,行级锁,完整支持事务,在启动时会自检,若表损坏,会自动修复。
具体的相关信息,谷歌吧,大把。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服