UltraEdit text editor for Linux 1.0

UltraEdit是windows下是知名的反汇编软件,也可用作文本编辑器,今天说的则是他在linux平台下发布的文本编辑器啦。
fedora下
redhat
ubuntu

简单翻译一下官方介绍:
支持的系统环境:

现有的UltraEdit for Linux发行版本支持以下发行版的linux(32位和64位):

  • Ubuntu 8.04, 9.04, and 9.10
  • Fedora 11 and 12
  • OpenSUSE 11.1 and 11.2
  • CentOS/RedHat Enterprise 4.8 and 5.4

对于其他发行版官方提供32位和64位版tar包下载. 虽然有tar.gz可使UltraEdit安装在任何linux发行版上,官方却不提供对安装和依赖性的说明,而只对上述发行版提供支持。

免费试用
安装完后,你将有30天试用时间,之后需要购买许可证继续试用程序。

购买UltraEdit for Linux

如果试用满意点此链接购买此产品。 purchase a license.

Fedora 12下载:http://www.ultraedit.com/files/uex/Fedora/12/UltraEdit-1.1-0.0.fc12.i686.rpm  (32位)

http://www.ultraedit.com/files/uex/Fedora/12/UltraEdit-1.1-0.0.fc12.x86_64.rpm  (64位)

Tar包下载:

http://www.ultraedit.com/files/uex/Other/uex-1.1.0.0_i386.tar.gz(32位)

http://www.ultraedit.com/files/uex/Other/uex-1.1.0.0_amd64.tar.gz(64位)

更多版本下载地址就不一一贴上来了:http://www.ultraedit.com/downloads/uex.html

清理Linux内存如此简单

#echo 1 > /proc/sys/vm/drop_caches

#echo 2 > /proc/sys/vm/drop_caches

看了一下,能够有效释放内存,默认是0
所以我操作完后又加了条命令
#echo 0 > /proc/sys/vm/drop_caches
是否会影响稳定性有待观察

终于完成了一次LFS 6.3

http://www.linuxsir.org/bbs/thread322894.html

上面有中文的速成参考手册。

即便如此我仍然使用了近2周才完成这个任务。

其实在去年就有完成一次的想法了,但是那时候刚刚接触linux就想在Fedora下直接搞,充分利用硬件资源,结果经过2~3天的连续不关机运行,只完成不到五分之一的软件编译后就出错了。环境不同出错的几率真大。由于天天上课并没有完整时间来进行我就放弃了,放假以来本来没打算做这个的,但放假了一半后我去给电脑加了根1G内存后,老电脑可以多同时进行几个任务了,于是装上了精简版的VM6,开始了这个痛苦并快乐的长时间折磨。每晚为了能把一个命令完成后再睡觉经常等到1、2点。被老妈吵了好几次。。现在总算熬出头了。BLFS不打算弄了。这次本来就是想知道这个到底要多久才能弄一遍。时间真是够长,我看的是速成手册,曾有两天想放弃了,因为那个帖子太长了。。。昨天给自己放了个假看了一天龙珠·改。今天把GRUB之后的部分全部完成了。全过程除了使用sda的硬盘与教程中hda不同之外未改变其他什么参数,所以异常顺利,而且期间掌握了如何在livecd中启动网卡以及启动SSHD。

先写到这吧。感觉学了一点东西,又觉得学的不多,也许是我太贪心吧。~ ~

VMware下网络选择详情

主机为WindowsXP系统,VMware虚拟机里安装Linux操作系统。安装完VMware后,主机的网络连接里面出现了两个新的连接,即VMware Network Adapter VMnet1和VMware Network Adapter VMnet8。虚拟机里安装的系统就是靠这两个虚拟网卡来联网的。

主机上类似antiarp  防火墙一定要关掉 否则虚拟机不能上网

有以下几种可选方法:
1、Bridged(网桥)方式:
如果主机是通过局域网上网的,可让虚拟机使用与主机网段、网关和DNS等的相同的设置,选用一个有效的局域网IP即可。

桥接方式可实现

虚拟机<—>主机
虚拟机<—->互联网通信(主机与虚拟机可看成是同一局域网的两台机)。

但桥接需要一个不同于原主机上的另外一个独立的IP地址,这对于有些情况(IP和MAC绑定,网管不同意),比较难办到。并且主机拔掉网线后,虚拟机无法与主机通过网络的方式进行通讯。而后面几种没这个问题。所以不太使用桥接方式。

多网卡桥接
当我有双网卡时,虽然VMnet0:Bridged to an automatically chosen adapter(在VMware的Edit ->Virtual Network settings… 打开Virtual Network Editor)

但是,我尝试了一下,虚拟机只可桥接“本地连接”(VIA网卡),不能桥接“本地连接2”(Realtek网卡)

在Virtual Network Editor ->  Automatic Bridging 选项卡里

若我们想桥接“本地连接2”(Realtek网卡)需要在“Exclude adapters” 里add “VIA网卡”(本地连接),这样“本地连接2”就可以桥接了。但是“本地连接”(VIA网卡)却不可以了,即使在“Exclude adapters” 里Remove “VIA网卡”也不行,我猜测 VMware其实只支持一个最初未被排除的网卡桥接!

没关系,我们可以在 Virtual Network Editor ->  Host Virtual Network Mapping 选项卡里,VMnet2选择Realtek网卡

这时,我们回到Virtual Network Editor ->  Automatic Bridging 选项卡,发现VMnet0 把 Realtek网卡排除了

桥接“本地连接”(VIA网卡)时,VMware选择VMnet0,

桥接“本地连接2”(Realtek网卡)时,VMware选择VMnet2

虚拟机上网络相应的设置,就可以了。

2、NAT方式:
使用VMware提供的NAT和DHCP服务,虚拟机使用主机中的虚拟网卡VMnet8作为网关,并且TCP/IP设置需遵循程序中关于vmnet8的DHCP和NAT设置,如IP必须在其DHCP设置的StartIP和EndIP之间,网关需使用其NAT设置的Gateway IP。
NAT方式可实现

虚拟机<—>主机 通信,但是
虚拟机—>互联网

即只能够虚拟机访问互联网,但是若想把虚拟机作为服务器,让互联网访问,不可以。
但是如果有多个网卡,虚拟机可以不用更改设置,就可以同时访问多个网卡连接的互联网。

3.host-only方式 :
默认使用vmnet1,将虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同
例如 vmnet1 ip :192.168.101.1
虚拟机设置: ip :192.168.101.100 gateway : 192.168.101.1
这样就实现了
虚拟机<—>主机 通信,
但是 虚拟机<—>互联网 仍无法通信

4、共享主机的Internet连接的方式(如果主机是Win98系统可能不适用):
在主机的“本地连接”属性的高级里面共享Internet连接。如果选的是VMnet1虚拟网卡,则在VMware的Ethernet设置需选用Host-only;如果选VMnet8,则Ethernet设置需选用NAT。共享连接后,那个被选中的虚拟网卡的IP会默认被设为192.168.0.1(如果主机也是通过局域网的 192.168.0.1网关上网的,则需把这个虚拟网卡设置为不同的网段IP,如192.168.1.1)这时候虚拟机里面就可以通过把这个虚拟网卡作为网关来上网了。实际上是一个简单的路由NAT,所以NAT方式就不讨论了,我们只以Host-only为例。
共享host-only方式,可实现虚拟机<—>主机 通信,但是 虚拟机—>互联网 即只能够虚拟机访问互联网,但是若想把虚拟机作为服务器,让互联网访问,不可以。

被选中的虚拟网卡的IP会默认被设为192.168.0.1,当然也可以更改。而且共享连接取消后,还会变回到共享连接前的网络设置。

在虚拟机linux里,设置网络:

总结:

共享连接方式和NAT方式,都可以实现虚拟机<—>主机 , 虚拟机—>互联网 通信,NAT方式设置简单,且可以实现同时访问多个物理网卡。
桥接方式可实现虚拟机<—>主机 虚拟机<—->互联网 通信,若虚拟机作为服务器,只有这种方式可行。但需独立的IP给虚拟机,且若物理网卡连接断开,虚拟机与主机也不能连接。
host-only方式只实现虚拟机<—>主机 通信 ,一般不单独采用。

本文由安全中国文章编辑

搭建LFS之ssh连接虚拟机的livecd

LFS=Linux From Scratch!

如果你想要快速对linux有深入了解,只要你肯下功夫,1个星期把LFS编译出来你就能入门了~~

之前是没想用livecd的,但是我在Fedora,Debian上都试着编译过LFS,总是失败,我把原因归咎于系统地软件版本对不上,要想第一次编译顺利,还是推荐虚拟机+livecd的方式。另外linuxsir论坛里最新的中文版指导书见置顶帖,针对LFS 6.3的~~

lfs livecd 6.3包含了sshd,因此我们主要是要配置虚拟网卡和启动sshd。

但首先我们要配置root密码,以免遇到安全问题

#passwd

接着配置虚拟网卡,请先确认你的虚拟机使用的网络类型,我选择了host-only,让虚拟机只和本机访问

#net-setup

选择eth0

选择dhcp

#ifconfig -a

看到eth0后面的 ip了吗?那就是你要来连接的ssh的ip地址

#/etc/rc.d/init.d/sshd restart

不管现在sshd是否开开,重启即可

参考文章:

http://blog.chinaunix.net/u/11065/showart_429939.html

http://www.cnblogs.com/benben7466/archive/2009/03/31/1425866.html

http://www.linuxsir.org/bbs/thread328309.html

dz论坛管理

可能标题起得有点大,但是之前我管理学校的dz论坛时可真是抓瞎~~

学了很多东西,从PHP,MYSQL到LINUX,而都只是浅浅的理解了一些,具体怎么维护真是一头雾水,这不,刚刚上了dz官网才发现该怎么作都告诉我们了。。。。。

http://www.discuz.net/usersguide/catalog.htm

使用ssh -D保证网络畅通

更新:
直接使用ssh -D,不需要使用tinyproxy
依据:
man SSH
-D [bind_address:]port
Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh will act as a SOCKS server

如:
ssh -D 192.168.0.1:8133 account@sshserver
就可以建立一个sock proxy.

后在浏览器的sock proxy设置就行了。
同时也可使用priovxy转乘http,然后和squid配合。

原文:

回到北京,通上网后,就发现一个上国外的网站特别慢,而且一些网站由于GFW的原因不能访问,这个很不方便,所以对这个进行了一些研究,现在把经验分享给大家。

主要的考虑:
1. 通过GFW,正常访问wikipedia, 和国外的新闻网站。
突破GFW的方法有
(1)tor,由于P2P,且数据加密,GFW对它没有什么太大的办法,但不排除有人,专门开诱引服务器的可能。
(2)访问cgi-proxy之类的东西, (与cgi-proxy之间使用ssl连接),
(3)使用ssh, 在linux爱好者中,有不少人在国外有host, 这个也应该是一个不错的方法

2。尽可能快的加速访问国际网的速度(现在慢有人说是光纤的原因,可以光纤事故已经有一个月了,到底要到什么时候才能修好。
这个我考虑使用多个proxy同时做代理的方法,

3.接入本地网站的计算机,无需做特别的设置就可以访问使用上面的功能。
这个一般使用iptable的功能,把80端口的数据包转发到代理服务器的端口。

现在配置的

上面是ssh tunner的过程,
host1上一般需要运行一个很小的代理程序,这里使用的是tinyproxy
他可以在一般用户方式下执行
我的配置文件:

User xxx
Port 62888
Listen 127.0.0.1
Timeout 600
Logfile “./tinyproxy.log”
LogLevel Notice
PidFile “./tp.pid”
MaxClients 30
MinSpareServers 3
MaxSpareServers 10
StartServers 5
Allow 127.0.0.1
ConnectPort 443
ConnectPort 563

2007 1/29 更新:
两个注意点:
1. port需要是没有用过的, 不要使用大于65536的port,使用的port也不能是其他程序已经使用的。
2. tinyproxy的执行方法:
tinyproxy -c tinyproxy.conf -d
不加 -d的话是不行的。 实际的执行过程中,我是执行了一个screen,在screen的一个窗口上执行了上面的命令。

在另一个窗口上做测试。

3。 测试方法:
可以使用screen.
配置
.wgetrc
http-proxy=127.0.0.1:62888
然后 wget xxx

如上图的示在本地开启多种连接。
/etc/hosts
192.168.0.1 sshtunnerl1
192.168.0.1 sshtunnerl2
192.168.0.1 tornetwork

/etc/squid/squid.conf

加入

cache_peer sshtunnel1 parent 8119 7 no-digest no-netdb-exchange
cache_peer tornetwork parent 8118 7 no-digest no-netdb-exchange

acl wikidomain dstdomain .wikipedia.org
acl voadomain dstdomain .voanews.com
acl sfdomain dstdomain .sf.net
acl sourceforgedomain dstdomain .sourceforge.net

cache_peer_access sshtunnel1 allow wikidomain
cache_peer_access sshtunnel1 allow voadomain
cache_peer_access sshtunnel1 allow sfdomain
cache_peer_access sshtunnel1 allow sourceforgedomain

cache_peer_access sshtunnel1 deny all

todo:
1。怎么写好规则squid,由于 squid restart比较费时,所以不知道有没有方法可以在不重启squid的情况下更新
规则。

已经解决, 使用/etc/init.d/squid reload, 一个低级的拼写错误使我误认为squid不支持reload(感谢achaoge)
achaoge
还提出了cat squid.conf.orig acl_rules > squid.conf && reload的方法,可以把关于对不同domain的配置,集中到一个文件来。这样如果有人愿意就可以写出很方便的web based的规则编辑工具。

2。怎样实现,第三种方法,就是从internet取得大里的代理,验证后,动态修改squid的规则。

利用Putty通过ssh端口转发实现FireFox和MSN加密代理访问

http://www.chedong.com/blog/archives/001246.html
参考原文:http://thinkhole.org/wp/2006/05/10/howto-secure-firefox-and-im-with-putty/

加密传输的机制如下:

/ foo.com

浏览器 <==secure tunnel==>ssh server – bar.com

example.com

浏览器先通过加密通道链接到一台服务器上,然后通过这个服务器再访问整个互联网。主要的用途就是这个绕道访问。具体你需要通过加密通道绕过谁? 谁用谁知道……
具体配置过程:
SSH登录工具Putty的登录设置中配置tunnel,目标设置为Dynamic,添加一个端口7070,再按Add,一个动态转发端口就实现了;

然后用相应帐号ssh登录后:除了登录的终端窗口意外,本地的7070连服务器的22端口之间就有了一个SSH加密的转发通道了。

为了方便切换,可以使用FireFox的SwitchProxy tool插件,设置socks代理通过本地的127.0.0.1:7070 进行传输。

MSN的机制类似:就是在连接配置中设置sock5 加密代理。

附:
获得国外的SSH帐号或者有Dreamhost虚拟主机的可以增加ssh用户:都可以用类似机制进行加密访问。

感谢number5:
更简单方便的setup方式是使用 putty的后台命令行程序plink
plink -N username@remote.ssh.server -D 127.0.0.1:7070
其中 -N 表示不需要shell
username@remote.ssh.server 换成你ssh帐户名和主机域名或者地址
或者替换成 -load sessionname 也可以,用dreamhost上的帐号试了一下,真的很快
如何在Windows下使用密钥方式登录Linux服务器:
如果设置需要基于密钥的登录(如果不设置密钥密码,就可以自动登录了),
我没有试成使用puttygen生成的密钥(公钥/私钥)直接部署在Linux服务器上。目前成功的方法是:先在服务器上用服务器上用./ssh-keygen生成密钥对,将公钥 id_rsa.pub >> 部署到要登录到的服务器上:/home/username/.ssh/authorized_keys 中,密钥在Windows客户端下使用:将密钥 id_rsa下载到本地,然后用puttygen导入id_rsa 另存转换为putty格式的密钥id_rsa.ppk即可。然后使用 plink -i c:pathtoid_rsa.ppk username@example.com方式登录。

注意:
加密通道和网站是否提供https没有直接的关系,https是指服务商直接向客户提供的加密,例如:GMail: https://mail.google.com/mail/, GReader: https://www.google.com/reader/view/,从ssh server到服务网站之间仍然是明文的http传输;
加密通道和匿名不匿名访问网站也没有直接关系。
ssh_tunnelling

捐献1$,获得国外主机登录帐号:SilenceIsDefeat.org
Che Dong (2006年11月25日 18:37) | 评论(5) | 引用通告(2)
http://silenceisdefeat.org/ 是一个非营利组织(创建于2000年):支持言论自由的公共Unix主机系统, 捐献(基于PayPal: 最高50$)后可以获得一个Unix系统帐号。 目前帐号包括:50MB用户空间, http访问(http://silenceisdefeat.org/~username), ssh, sftp, imap-ssl mail, pop3-ssl mail. 加密的即时通讯端口:IRC, AIM, MSN, ICQ, Yahoo!,Jabber, and Lily. P2P BitTorrent 客户端! 而且包括服务器端的SPAM检查。此外还有几个 为IRC的频道。 支持了一把:获得的帐号信息如下服务器一台P4 2G + 1G内存,操作系统是OpenBSD,web服务支持PHP http://silenceisdefeat.org/~chedong/ 登录上去到home看了一下:目前共有 4595个用户目录。
从国内服务器的路由情况:
My traceroute [v0.71]
chedong (0.0.0.0) Sat Nov 25 16:18:27 2006
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 60.195.249.1 0.7% 304 21.3 17.6 0.5 128.1 10.9
2. 202.99.57.129 3.0% 304 19.8 16.7 0.3 25.6 6.6
3. 202.99.57.253 1.3% 304 20.1 29.2 0.7 215.0 38.6
4. 221.4.0.5 1.3% 304 53.4 51.5 35.0 59.8 6.4
5. 221.4.4.225 2.6% 304 66.4 69.7 45.9 214.0 26.9
6. 221.4.0.9 2.0% 304 63.0 70.7 42.6 272.0 39.7
7. 219.158.10.137 2.6% 304 63.4 62.1 42.1 247.2 20.6
8. 219.158.4.53 2.0% 304 90.2 91.0 68.8 287.4 26.7
9. 219.158.3.30 2.6% 304 91.9 85.0 68.8 92.7 6.5
10. 160.81.7.81 0.3% 304 256.0 253.0 235.0 269.1 6.0
11. 144.232.4.245 2.6% 304 264.6 265.1 237.1 441.4 24.7
12. 144.232.20.181 2.6% 303 257.7 267.9 236.7 462.0 41.3
13. 144.232.3.218 2.6% 303 259.2 268.3 237.3 474.7 41.7
14. 144.232.9.240 1.6% 303 264.4 265.5 237.9 434.9 26.3
15. so2-0-0-2488M.ar1.SJC2.gblx.net 6.9% 303 357.9 353.4 333.1 484.3 19.7
16. so0-0-0-2488M.ar2.TPA1.gblx.net 8.2% 303 405.1 402.4 384.0 471.6 12.2
17. Lightspeed-IP-Inc-Triple-8-Tampa 7.3% 303 666.4 662.9 645.1 677.5 6.8
18. ve49.core02.tpa.sagonet.net 9.2% 303 509.5 506.6 484.2 526.6 7.2
19. gi0-2.ds05.tpa.sagonet.net 9.9% 303 311.2 308.3 291.6 321.4 6.6
20. ???
21. silenceisdefeat.org 99.7% 303 501.0 501.0 501.0 501.0 0.0

在 *nix 下
使用 SSH 命令:
ssh -f -C -q -N -D port number username@domain.tld
这样就可以把 Tunnel 放到后台执行了,参数的具体意思请参照 ssh 的 man page。

在 Windows 下
如果想把 Tunnel 放到后台,Putty 似乎不提供这个功能,不过我们可以使用一个叫 MyEntunnel 的小程序。它可以使 plink (putty 的命令行形式) 运行在后台并监视之,如果网络连接断了或是其它情况使 plink 停止运行,MyEntunnel 会自动重新启动 plink 并建立连接。

http://nemesis2.qx.net/software-myentunnel.php

事实上,MyEnTunnel 就是一个 pLink 的前端程序,建立 SSH Tunnel 还是靠 pLink(自)。在 MyEnTunnel 中,我们只需要填写好相关的信息即可,不需要记忆 pLink 那“丰富”的参数。对于一般用户而言,我们只需要设置以下几项(Setting 选项卡):

SSH Server:就是你的 SSH 服务器的地址;
SSH Port:一般都是 22;
Username/Password:用户名/密码;
选中 Reconnect on Failure,Enable Dynamic SOCKS;
Port:填上你本地代理的端口,如 8080;
然后点击 Connect 就可以了,等待任务栏中的小锁变成绿色,说明我们成功建立了一条 SSH Tunnel,并在 localhost:8080 上开启了一个 Socks 服务器。在你的浏览器中进行相关设置后,你就可以看到 Feedburner,看到 WordPress.com,看到 YouTube 了……

当然,相对于直接使用 pLink 来说,MyEnTunnel 最大的优势在于“断线重连”功能。它可以自动监视 pLink 的运行状态,如果断线了便可以自动重新连接。对于本本用户来说,我们可以自由的合上本本待机了,酷

当然,MyEnTunnel 虽好,但使用还是有一定的条件的:

一个大火长城外的 SSH Server,并且支持 SSH Tunnel。这对于如今的 Blogger 来说貌似不是什么难事,Dreamhost,Bluehost 都 OK;
服务器/虚拟主机需要支持比较大的流量。这个是很需要注意的,因为通过 Tunnel 的访问所产生的流量都是要计入你的 Hosting Account 的。国外主机流量虽大,但超了费用也高,所以还是建议您最小化使用 Tunnel,另外不要分享你的 SSH Account,特别是对于 mt, dreamhost 这样支持多个 SSH Account 的主机;
本地软件支持 Sock 代理。Firefox 是没问题的,QQ/MSN/GTalk 也都没问题。如果您的软件只支持 HTTP 代理的话,我建议您用 CCProxy 的二级代理功能建立一个本地的 HTTP 代理;如果您的软件压根就不支持代理设置,可以考虑用 SockCaps 这样的软件来解决;

http://bemike.org/2007/07/16/surpassing-gfw.html
突破 GFW 一法
Published on July 16, 2007 @ 10:32 am

生活在世界上最大的局域网中,是我们的无奈,但要是想突破 GFW 办法还是有的是的。
很多人喜欢用 Tor 或是”xx之门”之类的软件穿墙,我没用过,据说这两种方法速度都不太灵光。然后有一些人用 PHProxy 这个软件把国外主机变成代理服务器,通过代理访问不能访问的网站。这个方法我认为非常的好,尤其是 PHProxy 在使用上非常简单,如果你和代理之间的网络速度良好的话,访问任何墙外的网站速度都是非常快的。
如果你自己没有国外主机的话,其实一点也没关系,在网上搜索使用 PHProxy 的服务器比搜索普通的代理服务器容易的多,而且只要能找到使用 PHProxy 的服务器,几乎 100% 都可以正常使用,这点比普通代理服务器好的太多了。
在 Google 中搜索:
intitle:phproxy
然后你就可以看到一大堆的结果,别客气,选一个你访问起来最快的,尽情的向自由的世界奔去吧!
Update: dawnh 同学有一个非常好的补充,在上述的搜索语句中加入 inurl:https 就可以访问基于内容过滤的网站了。


intitle:phproxy inurl:https

http://www.brandonhutchinson.com/ssh_tunnelling.html
“Reverse” ssh tunnel
It is possible to create a “reverse” ssh tunnel. The reverse tunnel will allow you to create an ssh tunnel from your work computer to your home computer, for example, and then login to your work machine from your home machine even if your work firewall does not permit ssh traffic initiated from your home machine!

For this to work, an ssh server must be installed on your work and home computer, and ssh (TCP port 22) must be allowed outbound from your work computer to your home computer.

$ ssh -R remote_port:localhost:22 your_home_computer

ex. $ ssh -R 2048:localhost:22 home.computer.com

At home, you would then run ssh -p 2048 localhost to log into your work computer via ssh.

Here is a script I run every 5 minutes through the cron facility on my work system to make sure the reverse ssh tunnel to my home system is up and running. It is useful in case my_home_system is rebooted.

2006-11-15 update:

#!/bin/sh

# $REMOTE_HOST is the name of the remote system
REMOTE_HOST=my.home.system

# $REMOTE_PORT is the remote port number that will be used to tunnel
# back to this system
REMOTE_PORT=5000

# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -q -N -R $REMOTE_PORT:localhost:22 $REMOTE_HOST"

# Is the tunnel up? Perform two tests:

# 1. Check for relevant process ($COMMAND)
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND

# 2. Test tunnel by looking at "netstat" output on $REMOTE_HOST
ssh $REMOTE_HOST netstat -an | egrep "tcp.*:$REMOTE_PORT.*LISTEN"
   > /dev/null 2>&1
if [ $? -ne 0 ] ; then
   pkill -f -x "$COMMAND"
   $COMMAND
fi

ssh_tunnelling