Chinaunix

标题: 用awk命令 把 scp aa@10.0.1.1:/home/aa/z.sh /home/bb 包含进来 [打印本页]

作者: liyihongcug    时间: 2010-07-09 15:50
标题: 用awk命令 把 scp aa@10.0.1.1:/home/aa/z.sh /home/bb 包含进来
command linux执行过程 如下
【staAA】$ scp aa@10.0.1.1:/home/aa/z.sh /home/bb
z.sh                 100%   223   0.2kb/s   00:00
【staAA】$



我现在要用shell来判断scp是否成功
现在的想法是用awk命令  把上面的 scp aa@10.0.1.1:/home/aa/z.sh /home/bb  包含进来
之后看他的执行结果的第2列 是否是100% , 如果是这个表示是成功的

这个如何做? (用其他命令也可以的 )
作者: mgqw    时间: 2010-07-09 15:54
判断$?是否等于0应该可以
作者: liyihongcug    时间: 2010-07-09 15:58
本帖最后由 liyihongcug 于 2010-07-09 16:00 编辑

---判断$?是否等于0应该可以

1 $?是什么意思
2 可以和结合scp 把脚本写出??
作者: wild_li    时间: 2010-07-09 16:00
这个确实可以....角本正常执行,返回应该就是0
作者: liyihongcug    时间: 2010-07-09 16:52
本帖最后由 liyihongcug 于 2010-07-09 17:04 编辑

scp aa@10.0.1.1:/home/aa/z.sh /home/bb  的反馈结果为
z.sh                 100%   223   0.2kb/s   00:00

现在我想得到第2个100%
scp aa@10.0.1.1:/home/aa/z.sh /home/bb  | cut f2------------错误 如何改写
发现是空,
这个原因在于  scp aa@10.0.1.1:/home/aa/z.sh /home/bb  >aa.log  会发现aa.log 也是空的

想知道 用awk是否能得到这个命令的z.sh                 100%   223   0.2kb/s   00:00  的返回值
   这个命令如何改写 才能 得到第2个100%
作者: Shell_HAT    时间: 2010-07-09 17:02
回复 5# liyihongcug
  1. scp aa@10.0.1.1:/home/aa/z.sh /home/bb | awk '{print $2}'
复制代码

作者: liyihongcug    时间: 2010-07-09 17:06
scp aa@10.0.1.1:/home/aa/z.sh /home/bb | awk '{print $2}'  发现是空的


楼上请注意 我执行这个
scp aa@10.0.1.1:/home/aa/z.sh /home/bb  >aa.log  会发现aa.log 也是空的

现在不知道如何解决这个问题
作者: howge    时间: 2010-07-09 18:13
回复 7# liyihongcug


    哈~~  以前遇见过,scp好像不能把log重定向到文件里面
作者: liyihongcug    时间: 2010-07-09 18:16
那楼上如何做的 啦 ,  很想解决这个问题的
作者: Shell_HAT    时间: 2010-07-09 20:52
回复 7# liyihongcug

  1. scp aa@10.0.1.1:/home/aa/z.sh /home/bb &>aa.log
复制代码
这样可以吗?
作者: wild_li    时间: 2010-07-09 22:53
本帖最后由 wild_li 于 2010-07-09 22:56 编辑

网中人好像有文章说,,tee 不知道行不行.
作者: liyihongcug    时间: 2010-07-10 11:40
scp aa@10.0.1.1:/home/aa/z.sh /home/bb &>aa.log

发现还是失败的  ???   头疼
作者: bbgg1983    时间: 2010-07-10 12:02
楼主,遇到问题在本版搜索一下,论坛里每天的问题80%都是以前有过的,你参考一下这个帖子
http://bbs.chinaunix.net/thread-798381-1-1.html
作者: whoiswhoz    时间: 2010-07-12 10:40
回复 12# liyihongcug

   试试:
    把scp写到a.sh里
   然后 ./a.ah >log
作者: liyihongcug    时间: 2010-07-21 17:24
scp aa@10.0.1.1:/home/aa/z.sh /home/bb
提示输入密码

根本没有到 $?这个地方去

不到$?   如何发邮件来判断啦??
作者: liyihongcug    时间: 2010-07-21 17:27
上面很多人的建议都是基于
scp aa@10.0.1.1:/home/aa/z.sh /home/bb  操作已经完成

但实际上。  这个脚本呢执行scp aa@10.0.1.1:/home/aa/z.sh /home/bb提示输入密码
根本没有结束。 不知道哦该如何才能当操作中断的时候发邮件

c语言的多线程可以做, shell支持吗?
作者: Puer_Tea    时间: 2010-07-21 17:53
需要两边 md5一下,然后比较吧, 如果一致则完成?

用rsync 比较省事吧。
作者: liyihongcug    时间: 2010-07-22 10:24
本帖最后由 liyihongcug 于 2010-07-22 10:31 编辑

1  rsync  可以把完整命令 写下》》》

  看了半天,不知道如何来测试2台机器之间是否连通???


2 “需要两边 md5一下,”  这个如何做
作者: liyihongcug    时间: 2010-07-22 11:12
本帖最后由 liyihongcug 于 2010-07-22 11:20 编辑

使用发现错误如下:;

[l@对比~]$ rsync -vazu -progress lh@192.168.10.1:/home/lh/aa.log /home/lh/test/
rsync: Failed to exec ss: No such file or directory (2)
rsync error: error in IPC code (code 14) at pipe.c(83) [receiver=2.6.8]
rsync: writefd_unbuffered failed to write 4 bytes [receiver]: Broken pipe (32)
rsync error: error in IPC code (code 14) at io.c(1119) [receiver=2.6.8]

---rpm -qa | grep rsync--------------发现2个机器都安装了 rsync-2.6.8-3.1
rsync-2.6.8-3.1

问如何使用rsync 这个命令


查询 chkconfig --list | grep rsync-----发现off server  表示没有启动
现在想办法把他启动
/etc/init.d没有rsync这个服务
但/usr/bin 有

参考环境:

A  linux rhel4 192.168.10.189
B  linux rhel4 192.168.10.4

(注:A作为服务端,B作为客户端将,将A上的/home/byheart目录下的所有文件同步到B上)

目的:

练习rsync部署,将来服务部署时程序更新多点同步;

操作步骤:

1、检查是否安装了rsync服务
  [byheart@test ~]$ rpm -q rsync
  rsync-2.6.3-1
  表明已经安装了此包;
  如果未安装可以到安装盘或者iso文件中找到相应的rpm包安装,也可源码安装;

2、server端需要在/etc目录下添加rsyncd.conf

  [byheart@test ~]$ vi /etc/rsyncd.conf

   uid = nobody
   gid = nobody
   max connections = 200
   timeout = 600
   use chroot = no
   read only = yes
   pid file=/var/run/rsyncd.pid  
   host_allow =192.168.10.4
   #syslog facility = local7
   log file=/var/log/rsyncd.log
   #rsync config
   #The 'standard' things
   [rsync_byheart]                              
        path = /home/byheart/                    #要同步的目录
        comment = backup

注:以上内容可以通过man rsyncd.conf获得,帮助中详细说明了个参数的意义;

3、rsync服务器启动的方式

   /usr/bin/rsync --daemon

   rsync服务使用的端口是873,可以通过netstat -n |grep 873来看一下服务是否已经启动

  [root@localhost ~]# netstat -an |grep 873
  tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      
  tcp        0      0 :::873                      :::*                        LISTEN   
  说明服务已经启动;

4、客户端配置
   客户端只需要安装rsync的包即可,不用配置文件,下面就可以同步操作了,在B上执行rsync命令如下:
   
   rsync -auqz 192.168.10.189::rsync_byheart /tmp/old
作者: yuloveban    时间: 2010-07-22 11:43
echo $?




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