ssh client 通过 socks5 proxy 登录远程服务器

今天某同学需要登录某国家服务器(A),但从我朝过去网络延时非常大 发现从岛国过去的速度相当快,但因为岛国的服务器(B)不适合加该同学的帐号 因此做了一个 socks5 proxy ,然后本地 ssh client 通过该 proxy 登录A服务器

ssh -o ProxyCommand='nc -x ${proxy_server}:${proxy_server_port} %h %p' xxx.xxx.xxx.xxx

如:

ssh -o ProxyCommand='nc -x 127.0.0.1:7070 %h %p' 8.8.8.8

需要注意的是,nc需要使用 OpenBSD 版本 …

more ...

Mac OSX iTerm2 终端UTF-8和GBK编码自由切换

老树使用的是Mac OSX系统,平时终端都是使用iTerm2替代默认的Terminal进行使用。

考虑到各种兼容性,个人一直使用的是UTF-8编码,但由于老树管理着大量服务器,并且可能使用的是GBK或者其它编码,经常由于终端环境编码的不同,导致登录服务器出现乱码,或者需要处理GBK文件时,要使用iconv进行多次编码转换,相当麻烦。

好在iTerm2使用了比较友好的Profile配置及切换方式,首先我的默认配置(Default Profile)使用了UTF-8编码:

我另外建立了一个Profile,叫GBK:

并编写了一个非常简单的切换脚本:

#!/bin/bash
# 使用GBK Profile
echo -e "\033]50;SetProfile=GBK\a"
# 环境编码切换为GBK
export LANG=zh_CN.GBK
export LC_ALL=zh_CN.GBK
# 更改当前 iTerm2 tab title
echo -ne "\033]0;"$@"\007"
$@
echo …
more ...

sshd无法使用secureFX传输文件

某同学表示,某些机器无法使用secureFX进行文件传输。

正常情况下:

i RECV : AUTH_SUCCESS
i RECV : Server Sftp Version: 3
i SEND : RealPath(raw) .
i Resolved RealPath: /home/demo
i SEND : OpenDir /home/demo

而无法传输文件的服务器则是如下日志:

i RECV : AUTH_SUCCESS
i Changing state from STATE_CONNECTION to   STATE_TRANSPORT_STOPPING.
i Changing state from STATE_TRANSPORT_STOPPING to STATE_CLOSING.
i Changing state from …
more ...

Django Admin 使用 filter_horizontal 不生效

Django 1.2.7 admin在使用ManyToManyField的时候,默认使用垂直filter_vertical方式进行显示与选择。此方式在选项比较多的时候,难以直观的看出哪些选项被选中,在尝试使用filter_horizontal进行显示的时候,我们碰到了一些问题。

more ...

pelican增加自定义jinja template filters

pelican官方文档没有显式的指明应该如何自定义jinja template filters.

在制作标签云的时候,不想写复杂的javascript,更不想又import一份javascript进来,所以决定自己搞一个比较简单的标签云

pelican默认的tag排序比较简单,为了能有比较“云”的感觉,决定对tag加个随机排序

查了Jinja的文档,没有随机排序的filter。由于我使用了virtualenv,所以最简单粗暴的解决方案是直接修改了Jinja的源码,添加了随机排序的功能

不过对于稍微有些“洁癖”的好,这样改后,心理上非常难受,决定到pelican社区,看看是否有幸添加个patch

当然,更幸运的是在github找到了此commit:

https://github.com/getpelican/pelican/pull/96

原来有个JINJA_FILTERS的设置,那一切就好办了, 增加自定义模块jinja_filters.py

import random

def shuffle( value ):
    """ Jinja template …
more ...

配置Bind使用MySQL dlz模式

安装MySQL/Bind with dlz

略过,bind dlz安装,只需在编译的时候增加 --with-dlz-mysql 选项即可。

创建 MySQL 数据库

根据自己的需求创建即可,如使用如下命令创建一个名为 dns 的数据库:

CREATE DATABASE dns DEFAULT CHARSET UTF8;

使用 use dns 切换进 dns 数据库后,使用如下命令创建一张 dns_records 表:

CREATE TABLE `dns_records` (
`zone` varchar(255) NOT NULL,
`host` varchar(255) NOT NULL,
`type` varchar(12) NOT NULL …
more ...