2012年8月16日星期四

automator自动ssh登陆遇到的“pseudo-terminal will not be allocated becausee stdin is not a terminal”

现在的工作中经常需要通过ssh连接主机,生活中也需要通过ssh来翻墙。但是每天每天要输一遍长长的ssh非常麻烦,常常饱含一堆的端口转发的设置。

因此,就想为什么不能用MAC上的Automator工作流来自动执行登陆,但是一开始不大顺利直接使用ssh name@hostname放在工作流的执行shell脚本里面直接报错——“pseudo-terminal will not be allocated becausee stdin is not a terminal ”。刚开始以为是要prompt输入密码的原因。

于是,参照网上的说法,生成了密钥对,并把公钥放在了远程服务器端,通过shell登陆可以不输密码了,具体的操作可以搜索 ssh-keygen生成密码对

搞定密钥匹配之后,使用工作流测试还是有pseudo-terminal will not be allocated becausee stdin is not a terminal ”的问题,于是直接google这个错误信息。获取的信息都是不在shell执行ssh时,比如其他程序调用或者系统启动项时会有这个错误,原来在linux中也有。。。因此找到问题的原因是ssh要求有终端输出的。按照网上的解决方式1,2,参照ssh参数说明,可以使用-tt实现强制外部调用。

如此两步之后,结果还是出现了pseudo-terminal,最后没办法试了个系统黑洞,虽然原网页说还有同样的问题,但是我这边竟然成功了。

因此,最后成功的命令是:
ssh -tt name@hostname -pport -L port1:ipaddress:port2 > /dev/null &


2012年8月5日星期日

unix unzip报"need PK compat. v4.5"错误的解决方法


昨天在AIX主机上用unzip解压一个在微软平台上压缩的zip文件时报以下错误:
% unzip xxx.zip
Archive:  xxx.zip
   skipping: xxx.rpt  need PK compat. v4.5 (can do v2.0)

在google上搜了一圈之后,可能是因为unzip不支持zip64的压缩类型,确实提供者说使用了一个强力的压缩方式把原本22G的文件压成了300M.

遂寻找方法进行解压,发现很多人说到用p7zip进行解压,但网络上的安装教程很多都是基于ubuntu/debian的,最后终于在http://www.perzl.org/aix/index.php?n=Main.P7zip上找到一个rpm包。

然后下载后,就可以使用以下方式进行安装

$rpm -i p7zip-9.20.1-1.aix5.1.ppc.rpm

以下命令查看是否安装上
$rpm -aq | grep 7z

接着找到安装完之后的路径
$find / -name '7zip'

方便运行,建一个符号链接到/usr/bin
$ln -s 安装地址 /usr/bin/7za

最后就可以通过以下方式对文件进行解压
$7za e xxx.zip