红枫醉秋

可怜未温春已半,半生一梦醒尤难。

分类:未分类

Windows CMD(BAT)批处理的一些小坑

在处理UDP2RAW/KCPTUN的时候,想把服务器放在NAS虚拟出的下载机(Windows7)上。于是遇到了BAT批处理的一些坑,填坑如下:

1、要加setlocal enabledelayedexpansion一行,否则字符串截取运算不能引用变量。

2、bat的字符串运算似乎不能直接查找指定字符。要一个字一个字的截取判断。实在是个坑。

 

@echo off

setlocal enabledelayedexpansion
set /p domain=请输入要查询ip的域名:
set num=
set c=
ipconfig/flushdns >nul
for /f "delims=" %%i in ('ping %domain%^|findstr %domain%') do (set a=%%i)
:next
if not "%c%"=="[" (
set /a num+=1
set c=!a:~%num%,1!
goto next
)

SET ip=!a:~%num%,-14!
echo %domain%的ip地址是%ip%

 

因为nohup和screen所走过的弯路

在神奇的nohup command >/dev/null 2>&1 &失灵(关闭shell后进程还是会被杀死)之后,只好尝试用screen来实现后台运行的功能…

然而,更神奇的是,在shell中手动执行命令可以用screen的名字来指定screen进程,但是一旦用脚本,就会提示找不到对应的screen 。所以,只好再加一个判断来选择某一个screen的具体pid…折腾了一个上午,代码如下:

#! /bin/bash
screen_name=$"runudp2raw"
spid=$(screen -ls | grep $screen_name)
spid=${spid%.*}
echo $spid
screen -X -S $spid quit
screen -dmS $screen_name
spid=$(screen -ls | grep $screen_name)
spid=${spid%.*}
echo $spid
cmd=$"udp2raw"
screen -x -S $spid -p 0 -X stuff "$cmd"
screen -x -S $spid -p 0 -X stuff $'\n'

AnyConnect客户端连接Ocserv 报错 “The secure gateway has rejected the connection attempt.”的解决办法。

Ocserv是一个兼容Cisco AnyConnect客户端的开源VPN程序…至于为什么要用AnyConnect,请各位自行百度。

在我的某一台服务器上,配置好服务之后,用Ocserv自己的客户端OpenConnect连接一切正常,但是用AnyConnect(包括iphone和Windows客户端)连接就会在二十秒内断开,提示“The secure gateway has rejected the connection attempt. A new connection attempt to the same or another secure …”

百度&google了一下,貌似并不是我一个人遇到了类似问题,而大家也都没有什么好的解决方法。

显然这种类似玄学的方法是不起任何作用的,于是在花了六个小时一点一点的对比配置文件和分析日志之后,我发现似乎给MTU指定一个具体的值可以解决问题…

比如:

vi /etc/ocserv/ocserv.conf

按i,增加一行

mtu = 1480

然后按esc,输入:wq!(包括“:”)

最后,重启ocserv就搞定了

/etc/init.d/ocserv restart

Ubuntu 上安装 Docker 1.x

首先,获取docker apt 源的 gpg:

wget -qO- https://get.docker.io/gpg | apt-key add –

然后,添加 docker 的 ubuntu 源:

echo deb http://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list

接下来,更新 ubuntu 源:

apt-get update

最后,apt 安装需要的软件:

apt-get install vim curl htop lxc-docker -y

Ubuntu下用sysv-rc-conf设置/etc/init.d/下脚本的自动运行

在Ubuntu系统下我们常常会使用/etc/init.d/下的脚本来安装服务。但是脚本写完之后,系统重启后并不会自动运行。这时候我们就需要用sysv-rc-conf来设置自启动。

首先安装sysv-rc-conf服务:

apt-get install sysv-rc-conf

然后最大化shell窗口后运行:

sysv-rc-conf

用空格把对应服务2、3、4、5的五个“X”打上,然后按“Q”键退出就行了。

解决用Let’s Encrypt签署证书时提示“setuptools pkg_resources pip wheel failed with error code 2”的问题

问题是由于VPS上存在多个不同的python版本造成的。

先运行

apt-get purge python-virtualenv python3-virtualenv virtualenv

删除后再

pip install virtualenv

(大概这样就OK了?)

各位用套路云的同学,你们能打开 google 时间轴的网站吗?

如题~遇到了一个很奇怪的问题……

https://www.google.com/maps/timeline?pb

阿里云的新加坡和硅谷节点都不能打开这个网站…

换了 GCE 的实例就没有问题,能正常打开了….
好奇怪…

一个在线Linux Shell语言自动格式化网站

对于我这种偶尔会在Windows下面写Linux(Zhuang) Shell(Bi)的人来说,还是很实用的….

http://web.chacuo.net/formatsh

WordPress中文链接打开404的解决办法

经常会有wordpress用户出现页面打开404的情况,这种情况主要是2个原因:伪静态设置的问题;服务器不支持中文链接导致。伪静态的问题可以到wordpress后台设置-固定链接进行设置,如果依然不行的话可以联系服务器管理员。

WordPress中文链接在某些服务器上面也会出现404的情况,大部分是在windows系统的服务器(所以我们非常不推荐使用windows服务器,坑比较多)。解决这个问题我们建议在固定链接的设置上可以不要选择文章名字的方式,可以选择使用ID,另外页面、分类、标签手动修改别名为英文字母数字等。比较麻烦的就是标签,由于标签的数量会比较多,而且不定期会增加,手动修改会比较麻烦,这里推荐几个插件,可以解决这个问题:Auto Tag Slug、IIS Chinese Tag Permalink。

以上为使用插件的方式,但是由于这两个插件都是好多年都未更新了,所以这里再给出一种修改代码的方式(修改代码会被新版本覆盖,请每次更新留意这个问题)。进入wp-includes目录,找到class-wp.php文件,在第178行和182行找到如下代码:

将178行修改为:


$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? mb_convert_encoding($_SERVER['PATH_INFO'],'utf-8', 'GBK') : '';

将182行修改为:


list( $req_uri ) = explode( '?', mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8','GBK') );

 

注意修改的时候使用专业的代码编辑工具,例如:Dreamweaver、sublime text、notepad++。

Powered by WordPress & Theme by Anders Norén