分类 linux 下的文章

基友喊一起玩DOTA自走棋,在steam安装时候有个生成桌面快捷方式的选项,选择上安装之后在桌面就有个带游戏icon的APP,很明显不可能再复制一份游戏的主体APP文件过来,所以就看了一下包的内容。

直接把APP托到编辑器里打开之后,目录结构大致如下图:

MacOs目录里有个run.sh文件,这就是正常的一个sh文件,里边有一句启动steam游戏的命令,删掉这条命令就可以了,我们改写成自己的bash内容即可。

在这之前,我自己常用的sh文件都放在个人目录下的shell文件夹,所以我只需要启动我自己的sh文件就可以了

run.sh

#!/bin/bash
# autogenerated file - do not edit

/Users/${username}/shell/start.sh

尝试一下,运行这个修改过的APP,发现sh命令成功启动~~

修改ICON

icon文件就在Resources文件夹里,名字是shortcut.icns,我们找一个我们喜欢的icns文件保留名字不变替换源文件即可。

替换之后APP的图标还是没变,我们把APP文件复制一份就可以了~~

我直接复制到/Applications文件夹里,并命名为start.app,这样就可以直接在启动台启动APP了。

设置开机启动

在偏好设置里修改登录项,添加这个APP即可开机启动,从而做到开机运行我们的bash

其他细节

判断进程是否运行

ps -fe|grep name |grep -v grep
if [ $? -ne 0 ]
then
echo "开始运行"
else
echo "已经在运行中了"
fi

自动插入到screen

 screen_name="screen_name"
 screen -dmS $screen_name
 screen -x -S $screen_name -p 0 -X stuff '~/shell/xxxxx.sh
 '

注意screen -x -S命令后边的换行,最后一个单引号要到下一行,这样命令才会执行,不然就只是输入进去了

screen -list查看是否成功插入

打包好的APP

很多同学电脑上应该没有steam,所以没有这个APP,这里上传一个

APP

使用frp进行内网穿透

frp-GitHub

服务器端

  • 下载合适的版本(查看版本arch

  • 解压tar -zxvf frp_0.22.0_linux_amd64.tar.gz

  • 配置frps.ini

    [common]
    bind_port = 7000
    dashboard_port = 7500
    token = 12345678
    dashboard_user = admin
    dashboard_pwd = admin
    vhost_http_port = 10080
    vhost_https_port = 10443
    • “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
    • “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
    • “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
    • “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
    • “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。
  • 运行
    ./frps -c frps.ini

客户端(Windows)

  • 下载、解压

  • 修改frpc.ini配置

    [common]
    server_addr = x.x.x.x
    server_port = 7000
    token = 12345678
    [rdp]
    type = tcp
    local_ip = 127.0.0.1           
    local_port = 3389
    remote_port = 7001  
    [smb]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 445
    remote_port = 7002
    • “server_addr”为服务端IP地址,填入即可。
    • “server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000
    • “token”是你在服务器上设置的连接口令,原样填入即可。
    • “[xxx]”表示一个规则名称,自己定义,便于查询即可。
    • “type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。
    • “local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
    • “remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。
RDP,即Remote Desktop 远程桌面,Windows的RDP默认端口是3389,协议为TCP,建议使用frp远程连接前,在局域网中测试好,能够成功连接后再使用frp穿透连接。
SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问。

Shell目录下执行:./frpc -c frpc.ini

  • windows后台运行
    @echo off
    if "%1" == "h" goto begin
    mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
    :begin
    REM
    C:\frp\frpc -c C:\frp\frpc.ini
    exit

客户端(Linux)

  • 下载合适的版本(同服务端一样)

  • 编辑客户端配置frpc.ini

    [common]
    server_addr = x.x.x.x
    server_port = 7000
    token = 12345678
    [PCSSH]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 7003
  • 运行./frpc -c frpc.ini

web端查看frp运行状态

http://x.x.x.x:7500/static/#/proxies/tcp

查看原版本

java -version

显示如下

java version "1.7.0_101"
OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

安装 opensdk 8

add-apt-repository ppa:openjdk-r/ppa
apt-get update
apt-get install openjdk-8-jdk

列出已经安装的Java版本

update-java-alternatives -l

显示如下:

java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

手动切换版本

update-alternatives --config java

选择java-8-openjdk-amd64即可

    There are 2 choices for the alternative java (providing /usr/bin/java).

      Selection    Path                                            Priority   Status
    ------------------------------------------------------------
      0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
      1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
    * 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

    Press enter to keep the current choice[*], or type selection number: 2

在证书控制台下载Nginx版本证书。下载到本地的压缩文件包解压后包含:

  • .crt文件:是证书文件,crt是pem文件的扩展名。
  • .key文件:证书的私钥文件(申请证书时如果没有选择自动创建CSR,则没有该文件)。
    友情提示: .pem扩展名的证书文件采用Base64-encoded的PEM格式文本文件,可根据需要修改扩展名。

以Nginx标准配置为例,假如证书文件名是a.pem,私钥文件是a.key。

1.在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为a.key;

2.打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:

# HTTPS server
# #server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
#
#
#}
#}

3.将其修改为 (以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :

server {
 listen 443;
 server_name localhost;
 ssl on;
 root html;
 index index.html index.htm;
 ssl_certificate   cert/a.pem;
 ssl_certificate_key  cert/a.key;
 ssl_session_timeout 5m;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 location / {
     root html;
     index index.html index.htm;
 }
}

保存退出。

4.重启 Nginx。

在conf配置上添加一个80的server,将其转发即可

server {
    listen 80;
    server_name www.域名.com;
    rewrite ^(.*)$ https://${server_name}$1 permanent; 
}