要知道刚找到这个东西的时候我有多激动。上次更换空间后,服务器无论从CPU负荷、网站速度、服务器稳定性和脚本支持上都很让人满意,唯一的一个缺点是没有SSH。这在我来看其实是个很大的问题:而且虽然下行速度不错,但FTP上传的速度并不是很理想;西安电信ADSL一般20k/s(其实西安电信连国外的速度已经算是很优秀的了),在家里快一些,也就50-60k/s而已。以前可以直接用SSH从远程服务器下载zip文件并且直接在线解压,现在虽然Cpanel11的文件管理功能可以解压文件,但下载还是有点困难。
在很多搜索引擎和开源项目列表中找了很久(其实几个月前就想找这样一个工具了),最后在一个不知道是什么组织的网站中找到了这款工具。虽然已经是2003年的老产品了,相比其他工具来说,这才是唯一一个实现了真正的WebShell的工具。其他大部分工具都是利用php函数和现成的类来模拟各种shell命令,很多功能因为特定的函数在服务器被限制而无法运行,有写脚本则根本不能运行任何命令(连模拟器都算不上)。
这个CGI脚本几乎可以运行服务器权限允许内的全部命令(各位就不要问我能不能运行reboot命令了),至少我常用的wget、unzip、zip、rm、ls这几个功能是没问题的。程序只有一个密码作为登录认证,自己在脚本中设置就行了。有两种工作模式:一种是受限模式,只能运行指定的命令,具体可以运行哪些命令由你在脚本中添加;另一种是无限制模式,只要服务器权限足够,任何命令都可以运行。
和其他CGI脚本一样,属性755。另外,不要修改脚本的文件名,因为其中有个web表单的的提交对象就是脚本自身;如果你一定要改名,把脚本源码中出现的脚本名也一并改掉,否则命令提交后是找不到对象了。
不知道是程序本身的问题还是服务器的限制,用wget命令下载时每次只能下载不超过2.35MB的内容。不过这个问题很好办,用-c参数续传就行。第一次用wget下载2.35MB的内容,然后加上-c参数(wget -c http://abc.zip)续传,不过续传也一样只能下载2.35MB内容,大文件得多次续传。文件完全下载完之前,似乎每次命令好像都要执行很久,其实你在FTP中如果看到这次文件体积增加了2.3MB左右,那这次命令就已经完成了。手工在浏览器停止刷新,再执行一次续传命令,如此继续。最后一次当文件全部下载完的时候,屏幕上还是会正常返回命令执行结果的。
有点简陋是吧,将就着用吧,谁让你买了个没有SSH的空间,这东西可没花你一分钱。为防止某些色弱病症比我还严重的同学没看到上面已经给出的链接,再发一次这个程序的官方网址:
http://legacy.gammacenter.com/gamma.py/products/WebShell
增补:Dimlau提到说如果有几个G的文件要传送,续传会很麻烦。其实我忘了写一个很重要的部分,利用Cpanel的CronJobs功能也可以执行Linux命令的,只是每个命令都要添加一次cron jobs计划,或者把全部命令写入一个.sh文件执行。这种方式执行的命令应该是不会有什么文件大小限制的,也就不需要像用WebShell一样续传了。
评论