痴迷于造轮子的我又来了,这次写了个web系统,接管xshell,crt,实现在web端操作服务器,给源码
发布于 9 天前 作者 ops-coffee 2744 次浏览 来自 分享

造了好多轮子,上次发的这篇文章得到了关注我写了个系统,用来一键创建测试环境

陆续更新了一些功能和优化了体验后,用起来也是丝般顺滑了,于是又开始造新轮子了

Django实现WebSSH操作物理机或虚拟机

这个轮子有源码,你可以自己部署使用

19 回复

千不该万不该在js社区推py

@zengming00 这个是一个技术社区,应该讨论和发布关于 nodejs 的帖,而不是其他技术的就让他出门左转,甚至拉出去枪毙。

这又不是信仰,是大伙恰饭的工具而已

@zengming00 对不住,前端渣渣,之所以在这里发是因为觉得这个社区氛围很好,没啥戾气,不知道有咩有block功能,如果有麻烦你把我block了吧,抱歉

@axetroy 千言万语化成一句感谢!

挺不错的,不过从我个人角度来看,现在的趋势是越来越不给开发者直接上服务器的权限了,尤其是安全容器出来后,ssh 和 sh 指令都没了。

@atian25 正常情况下,开发者是没有生产服务器登陆权限的,不过开发、测试环境还可以给嘛,毕竟要查问题,另外这个webssh下一步会添加录像的功能,也就是所有操作都会录制下来,可以回放,用在生产环境,给运维人员使用也更有保障,录像功能下篇文章介绍

@ops-coffee 我们这边是更倾向于通过日志来排查问题,通过单测来保障质量,通过平台来运维。

@atian25 大佬厉害了,我们也有完善的系统流程保障,不过登陆服务器这种操作,不能完全避免,偶尔还是需要

像现在看到基础措施团队在调研 https://github.com/GoogleContainerTools/distroless 做安全镜像,到时镜像里面,连 vi 和 ssh 都没有了。如果是 Node 的话,就一个 node cli,连 npm 都没。再加上日志无盘化,只读镜像。

@atian25 我们这么干过,,but,,这个需要整个团队都有很高的能力,很好的合作,实验下来效果不好,主要是因为我们太菜了。。。不过这也是未来的方向

我的系统还真的需要你的这个应用 VueOS

@biggerV node.js 也一样可以。

@zengming00 拿node写一个,别怂

@i5ting 怂,懒,不写,两三年前写过一个类似的玩意,但是要简单得多,只能执行配置好的命令,有部署在公司服务器上,但从未真正用上

    socket.on('message', function (msg: string) {
      socket.send(`> ${msg}`);

      kill();

      if (!util.isString(msg) || !currentUser) {
        return;
      }
      const msgStr = msg.trim();
      if (!msgStr) {
        return;
      }

      let command: string | null = null;

      // 查找命令
      for (const cmd of currentUser.cmds) {
        if (cmd.name === msgStr) {
          command = cmd.cmd;
          break;
        }
      }
      if (!command) {
        socket.send(`找不到 ${msgStr} 命令`);
        return;
      }
      socket.send(`>> ${command}`);
      const arr = command.split(/\s+/);
      cp = child_process.spawn(arr[0], arr.slice(1));

      function sendMsg(data: any) {
        socket.send(data.toString());
      }

      cp.stdout.on('data', sendMsg);
      cp.stderr.on('data', sendMsg);
      cp.on('error', sendMsg);
      cp.on('close', (code) => {
        socket.send(`\r\nchild process exited with code ${code} \r\n\r\n`);
        cp = null;
      });

    });

@i5ting 我正在用node写类似的运维系统,其实在想是不是用py写更有优势啊

@dengnan123 大多linux会内置py,除此以外,没看出来

做过一个内部使用的工具集成了这个功能, 就是 node 撸的(electron客户端工具),使用 ws + node-pty + xterm.js 。 单独抽出来的话,加上 express 可以部署成 web terminal。

回到顶部