gotty 在浏览器中共享 linux 终端

来看下官方的说明:

GoTTY - Share your terminal as a web application

GoTTY is a simple command line tool that turns your CLI tools into web applications.

screenshot

GoTTY 是一个简单的基于 Go 语言的命令行工具,它可以将终端(TTY)作为 web 程序共享。它会将命令行工具转换为 web 程序。

它使用 Chrome OS 的终端仿真器(hterm)来在 Web 浏览器上执行基于 JavaScript 的终端。hterm + web socket 想法灵感来自 Wetty 项目

一、安装

可以使用go自行编译,也可以直接使用官方编译好的二进制包:https://github.com/yudai/gotty/releases

我使用了1.0.1这个版本:

export VER="1.0.1"

wget https://github.com/yudai/gotty/releases/download/v${VER}/gotty_linux_amd64.tar.gz

tar xvf gotty_linux_amd64.tar.gz
chmod +x gotty
mv gotty /usr/local/bin/

echo "https://github.com/yudai/gotty"
/usr/local/bin/gotty -verson

image-20210713104710247

二、使用

参考官方github使用 https://github.com/yudai/gotty#usage

既可以使用配置文件,也可以直接在命令行中带上。

2.1 简单使用

Usage: gotty [options] <command> [<arguments...>]

例如:

gotty top
gotty df -h

直接在后边带上命令即可。

gotty也提供了较多的自定义能力,比如:

  • 指定监听的ip和端口
  • 开启SSL
  • 启用账号密码登陆
  • 启用浏览器可操作命令行

具体还是参考官方文档。

2.2 个人命令参考

下面是我的运行命令,指定了监听的ip和端口,并让其进入 tmux 的会话,达到命令行共享的能力:

/usr/local/bin/gotty -a $KELU_LOCAL_IP -p 38480 tmux attach -t gotty

使用 linux 默认的 screen 命令也可以达到这样的效果。

2.3 nginx配置

nginx 转发配置示例,主要是注意把 websocket 转发的参数配上:

server {
  listen       80;
  server_name  xxx.xxx.xxx;

  access_log /log/nginx.access.log;
  error_log /log/nginx.error.log;

  location / {
     proxy_pass http://xxx.xxx.xxx.xxx:38480;
     proxy_redirect off;
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_set_header Accept-Encoding gzip;
  }
}

使用 slides 在 linux 终端演示 PPT

slides 是一个可以在终端将Markdown转换为PPT的库,可以直接在终端展示PPT,同时执行PPT中的代码片段。

最近有个场景使用了这个工具,简单记录一下安装使用过程。

slides

一、安装

不同平台可以参考官方文档编译,我这里直接使用了二进制文档:

export VER="0.4.1"

cd /tmp
wget https://github.com/maaslalani/slides/releases/download/v${VER}/slides_${VER}_linux_amd64.tar.gz

tar xvf slides_${VER}_linux_amd64.tar.gz
mv slides /usr/local/bin/

二、使用

简单使用只需要记住:

  • PPT各页之间通过 --- 来划分

下一页:

  • space
  • right
  • down
  • enter
  • n
  • k
  • l

上一页:

  • left
  • up
  • p
  • h
  • j

官方有例子,可以下来尝鲜: example slides.

关于自定义主题,感兴趣的也可以看看:theme.json

另外,如果需要预编译流程图,那么需要安装 graph-easy 工具,并把 markdown 文件设置为可执行。

三、流程图

流程图的工具安装,在这里也记录一下,需要安装 perl、graphviz和基于前两者的 Graph::Easy:

# centos
yum install perl 
yum install graphviz

# debian
apt-get install perl 
apt-get install graphviz

# 安装上述软件后安装 Graph::Easy
perl -MCPAN -e shell
cpan[1]> install Graph::Easy
graph-easy -version

Graph::Easy v0.76  (c) by Tels 2004-2008.  Released under the GPL 2.0 or later.

安装 Graph::Easy 的过程有点久,要有点耐心。

参考资料


debian 使用 wine 安装网易云音乐

背景

虽然网易云音乐官方提供了linux安装包, 无法在我目前的系统 Debian 9 上使用, 运行时报错 glib 缺少xxx之类的信息:

无奈还是用 wine 安装.

这篇文章简单记录使用 wine 安装网易云音乐的过程. wine的相关知识以及如何安装可以参考我以前的文章.

下载

  1. 下载exe文件.

  2. 启动安装程序:

    WINEARCH=win32 WINEPREFIX=/home/kelu/Wine/WeChat wine uninstaller
    

  3. 普通的点击install安装即可.

  4. 解决黑屏问题:

     winetricks ddr=gdi
    
  5. 做一些基本的配置:


Linux 终端环境安装 L2TP 客户端

一、安装

# Ubuntu/Debian
apt-get install xl2tpd ppp

# Centos
yum -y install xl2tpd ppp

二、配置

以下<> 内部的是需要自己修改的内容,按需修改。

1. l2tpd配置文件

# /etc/xl2tpd/xl2tpd.conf 文件

[lac <id>]
name = <name>
lns = <l2tp_server_ip>
pppoptfile = /etc/ppp/peers/<id>.xl2tpd
ppp debug = no

<id> <name> <l2tp_server_ip> 大家按需求修改就好。

2. ppp配置文件

# /etc/ppp/peers/<id>.xl2tpd 文件

remotename <id>
user <l2tp_user_name>
password <l2tp_user_password>
unit 0
nodeflate
nobsdcomp
noauth
persist
nopcomp
noaccomp
maxfail 5
debug

三、启动守护进程

systemctl start xl2tpd

查看进程状况。

systemctl status xl2tpd.service

显示正在运行。

image-20210602155731986

四、开启连接

启动成功后,表示守护进程已启动,等待新的连接操作。

连接 L2TP 服务器的命令如下:

sh -c 'echo "c <id>" > /var/run/xl2tpd/l2tp-control'

断开连接的命令为:

sh -c 'echo "d <id>" > /var/run/xl2tpd/l2tp-control'

使用 ifconfig 查看网络设备,如果出现 ppp0 这个网卡项,表示连接成功了。


debian 安装 wine 与 wine 微信备忘

最近使用 Debian 进行办公,微信在国内是必不可少的办公工具。在linux上有很两种实现方式,

  • 集成web微信的http接口,这是最常见的,例如
    • Snap 安装第三方微信客户端 Electronic-Wechat
    • rambox 安装微信
  • 虚拟化 win 软件,仅有 wine 一家。

两种方式对个人来说都差不多,基于web微信的可以搞更多的花样,但很可惜的是,我的账号不允许登陆 web 微信,我也不知道为什么。所以直接pass,只能走wine 微信这一条路。

这篇文章记录安装 wine 和 wine 微信的要点。

零、什么是wine

Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如Linux,Mac,FreeBSD和Solaris等)上运行 Windows 应用的兼容层。

Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是将 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

一、安装wine

1. 打开多架构支持

查看内核架构:

sudo dpkg --print-architecture  

image-20210601164658434

如果运行的是 64 位系统,需要开启 32 位架构支持

  • 添加i386架构
sudo dpkg --add-architecture i386

2. 添加源并安装

  • 下载 winehq.key 并导入
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
  • 添加 winehq 源,在/etc/apt/sources.list中增加一行
deb https://dl.winehq.org/wine-builds/debian/ buster main
  • 更新源
sudo apt update
  • 安装winehq-stable
sudo apt install --install-recommends winehq-stable

查看wine版本号:

wine --version

image-20210601165402549

二、配置wine

  1. 建议使用桌面用户进行安装,root用户未来要复制一些文件会比较麻烦。我暂时切到我的桌面用户kelu。
su kelu
  1. 由于我一般登陆两个微信,所以我希望能同时跑两个wine来解决这个问题。所以我在运行wine前都会选择各自的独立配置。

1. 配置不同的wine配置文件

mkdir ~/Wine
WINEARCH=win32 WINEPREFIX=~/Wine/WeChat winecfg
WINEARCH=win32 WINEPREFIX=~/Wine/WeChat2 winecfg

其中 WINEARCH=win32 的作用是告诉Wine创建一个32位的wineprefix。

wineprefix 是生成配置文件的目录。

image-20210601174338238