Chinaunix

标题: shell远程服务器问题 [打印本页]

作者: spacehaibin    时间: 2011-07-21 13:37
标题: shell远程服务器问题
我现在遇到一个问题,机器A管理机器B,简单一点的话,比如,登录到B的root目录下,检查下有没有C这个文件,没有的话,建立一个C。
先建立ssh通道,再 ssh IP_B "if [ -f C ]; then ;else  touch  C;fi"
这样是可以的,如果逻辑比较复杂的话,ssh IP_B command,还是这样吗?command 里面有变量的话,那该怎么弄的?
还有一种办法是用expect,这个逻辑判断,不知道该怎么弄,
希望大虾能指导下,或者给个思路吧,谢谢了

或者说一个机器管理多台机器,要有 删除远程机器的文件,查询等等功能,这个思路应该怎么写呢?
作者: shplpy    时间: 2011-07-21 14:14
你遇到什么问题了
作者: spacehaibin    时间: 2011-07-21 15:28
回复 2# shplpy


   在 一个机器上管理多台机器,要有 删除远程机器的文件,查询等等功能,这个思路应该怎么写呢?这个逻辑比较复杂,有时候需要在远程机器上做判断,应该要怎么写
作者: java_html    时间: 2011-07-21 16:07
一定要用ssh这种方式吗?ftp方式可以吗?
作者: shplpy    时间: 2011-07-21 17:35
回复 3# spacehaibin


    做好key信任的话就很简单了,不复杂,在本地怎么写的脚本,在远程也一样,只是要注意一下变量的问题,举个简单的例子:

删除每台机器的指定文件/tmp/file.txt  和 /root/trash.txt

#!/bin/bash

iplist='192.168.1.1
192.168.1.2
...
'
filename=/tmp/file.txt

for ip in $iplist;do
        ssh $ip    "
filename=/root/trash.txt
echo  \"  $filename  \$filename  \"
if [ -f $filename ];then
       rm -f $filename
elif [ -f \$filename ] ;then
       rm -f \$filename
fi
"
done

exit 0

就这样,注意两个filename变量使用方式的不同
作者: spacehaibin    时间: 2011-07-22 11:05
回复 5# shplpy


    恩,谢谢大哥,我已经明白使用的方式了,不过在ssh 里面 为什么要反斜杠转义呢?不是很明白,能再解释下么
作者: shplpy    时间: 2011-07-22 15:57
回复 6# spacehaibin


    对于shell,我只是懂点皮毛

不转义的话,会解释本地设置的变量
还有awk中的$
还有远程执行时的$(),``等命令替换符号也需要转义,否则便是执行本地的命令,违背初衷。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2