- 论坛徽章:
- 0
|
刚刚注意到sshpass程序。相比较而言,bssh更为好用。
bssh是c语言程序,提供了bssh、bsftp和tt2程序。其中bssh和bsftp分别对应ssh和sftp客户端。bssh/bsftp除了一个-p选项用以输入密码外,用法和ssh/sftp一致。需要说明的是bssh/bsftp目前只接受ssh/sftp可以接受的-o选项。
如果可以同时设定服务器端和客户端,使用类似bssh的程序没有必要。公钥认证是更好的方式。可惜,诸多原因,很难如愿。
对于单独一台或者几台服务器,可以直接使用bssh/bsftp来处理。比如:
bssh -p 'testpassword' -oPort=33458 test@192.168.2.45 'ls /etc/cron.daily'
普通用户登录后,使用su使用root权限:
bssh -p 'testpasswd' -r 'rootpassword' -oPort=33458 test@192.168.2.45 'ls /etc/cron.daily' 'echo hello'
直接root登录:
bssh -p 'rootpasswd' -oPort=33458 root@192.168.2.45 'ls /etc/cron.daily;echo hello'
bssh还支持管道:
echo 'ls /etc/cron.daily;echo hello' | bssh -p 'testpasswd' -r 'rootpassword' -oPort=33458 test@192.168.2.45 -
bsftp的用法与此类似,但是不支持登录后的su功能(没有必要)。
bsftp -p 'testpassword' -oPort=33458 test@192.168.2.45 'cd /home/test/db' 'get test_download'
另外,bssh/bsftp在初次登录ssh服务器时,会对是否保存服务器公钥指纹自动答复“yes”。并且在ssh远程登录后自动调整bash执行环境:将语言设定为en_US.utf8,把PATH设定为/usr/bin:/bin:/usr/sbin:/sbin。
对于服务器数量较多的情况,固然可以利用bash和bssh/bsftp搭配使用来处理。但是这个方案里有些不方便处。其一,需要处处注意bash的特殊字符;其二,如果服务器配置各自不同,比如密码不一样,登录端口不一致,在shell里处理起来相当麻烦。解决对大量服务器的循环处理,是tt2程序的功能。tt2使用bssh/bsftp,从配置文件中取得需要处理的服务器的登录设置。tt2使用parser程序解析配置文件,允许对每台服务器指定自己的登录方式。比如,如果有如下内容的配置文件test.conf:
user=test
passwd=testpassword
rootpasswd=rootpassword
port=33548
192.168.2.45
192.168.3.88
rootpasswd=anotherrootpasswd
192.68.5.56
可以如下执行命令:
tt2 -f test.conf 'ls /var/log'
tt2 -f test.conf 'ls /var/log' 'echo hello'
tt2 -f test.conf 'ls /var/log;echo hello'
在tt2里使用bsftp,而非默认的bssh,可以这么执行:
tt2 -c bsftp -f test.conf 'ls /var/log' 'get messages'
如上例所示。tt2的配置文件里每行都有一个标志说明所在行的意义。user:普通用户名;password:普通用户密码;rootpassword:使用普通用户登录成功后,su使用的密码;port:ssh服务器端口;ip:需要处理的服务器IP地址;以#开头的行:注释。对于空行则是直接跳过。
bssh的包在ubuntu、AS4和AS5上测试使用过。编译步骤如下:
tar xfj bssh.tar.bz2
cd bssh-1.2
make final
bssh、bsftp和tt2及parser就准备好了。将这4个程序放在一个目录下,在此目录下即可执行(这一点下一步改进)。
bssh/bsftp通过使用ssh的自动密码登录,将远程操作和本地操作,在shell环境下实现无区别处理。
另外,你可以使用-h选项看到简单帮助提示。都是用很烂的英语写的。
bssh.tar.bz2的校验:
文件大小:12915 字节
修改时间:2009年12月22日 11:35:18
MD5 : 79A9B939DBD525212F292BE10614B3C6
SHA1 : 6475A2E36D992E7DA751768F5BF3CD900427157F
CRC32 : A365A1C9
bssh源代码置于GPL 3及其以后版本的许可证下。
sshpass见此处:http://sourceforge.net/projects/sshpass/files/
[ 本帖最后由 白丁布衣 于 2009-12-23 11:26 编辑 ] |
|