免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3343 | 回复: 6
打印 上一主题 下一主题

shell远程服务器问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-21 13:37 |只看该作者 |倒序浏览
我现在遇到一个问题,机器A管理机器B,简单一点的话,比如,登录到B的root目录下,检查下有没有C这个文件,没有的话,建立一个C。
先建立ssh通道,再 ssh IP_B "if [ -f C ]; then ;else  touch  C;fi"
这样是可以的,如果逻辑比较复杂的话,ssh IP_B command,还是这样吗?command 里面有变量的话,那该怎么弄的?
还有一种办法是用expect,这个逻辑判断,不知道该怎么弄,
希望大虾能指导下,或者给个思路吧,谢谢了

或者说一个机器管理多台机器,要有 删除远程机器的文件,查询等等功能,这个思路应该怎么写呢?

论坛徽章:
0
2 [报告]
发表于 2011-07-21 14:14 |只看该作者
你遇到什么问题了

论坛徽章:
0
3 [报告]
发表于 2011-07-21 15:28 |只看该作者
回复 2# shplpy


   在 一个机器上管理多台机器,要有 删除远程机器的文件,查询等等功能,这个思路应该怎么写呢?这个逻辑比较复杂,有时候需要在远程机器上做判断,应该要怎么写

论坛徽章:
0
4 [报告]
发表于 2011-07-21 16:07 |只看该作者
一定要用ssh这种方式吗?ftp方式可以吗?

论坛徽章:
0
5 [报告]
发表于 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变量使用方式的不同

论坛徽章:
0
6 [报告]
发表于 2011-07-22 11:05 |只看该作者
回复 5# shplpy


    恩,谢谢大哥,我已经明白使用的方式了,不过在ssh 里面 为什么要反斜杠转义呢?不是很明白,能再解释下么

论坛徽章:
0
7 [报告]
发表于 2011-07-22 15:57 |只看该作者
回复 6# spacehaibin


    对于shell,我只是懂点皮毛

不转义的话,会解释本地设置的变量
还有awk中的$
还有远程执行时的$(),``等命令替换符号也需要转义,否则便是执行本地的命令,违背初衷。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP