千不该万不该在js社区推py
@zengming00 这个是一个技术社区,应该讨论和发布关于 nodejs 的帖,而不是其他技术的就让他出门左转,甚至拉出去枪毙。
这又不是信仰,是大伙恰饭的工具而已
@zengming00 对不住,前端渣渣,之所以在这里发是因为觉得这个社区氛围很好,没啥戾气,不知道有咩有block功能,如果有麻烦你把我block了吧,抱歉
@axetroy 千言万语化成一句感谢!
@ops-coffee 很欢迎的~~~
挺不错的,不过从我个人角度来看,现在的趋势是越来越不给开发者直接上服务器的权限了,尤其是安全容器出来后,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。