免费注册 查看新帖 |

Chinaunix

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

【已解决】如何判断远程主机文件是否存在问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-12 13:07 |只看该作者 |倒序浏览
本帖最后由 ccnuzxg 于 2012-03-13 10:10 编辑

想写一个简单的脚本判断远程主机上的一个文件是否存在,如果存在,进行XX操作,如果不存在,进行XX操作,

因为这两台机器没有做ssh信任,利用了expect,我下面的这段代码肯定是错的了。

因为$?判断的是输入password后执行的结果,并不是判断文件存在判断的结果,对if还是不熟额,大家帮忙修改下、、、

#! /bin/sh

expect << EOF

spawn ssh root@172.16.217.129 "test -f /root/.ssh/id_rsa"

expect {
        "password:" {
                send "123456\n";exp_continue
        }
}

EOF

if [ $? -eq 0 ];then
        echo "yes"
else
        echo "no"
fi

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2012-03-12 18:51 |只看该作者
已经用到SSH 的话,做个信任很难吗?

论坛徽章:
0
3 [报告]
发表于 2012-03-12 19:07 |只看该作者
哈哈,其实版主不知道 我就是要写一个批量建立SSH信任的脚本,如果是已经SSH信任的话,我这个问题也就没啥意义了~~

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2012-03-12 21:42 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2012-03-13 09:20 |只看该作者
回复 4# Shell_HAT

建立SSH信任的代码我都写好了,只是我在考虑代码的严密性时想到了这个问题,在建立SSH信任前,如果远程计算机上已经生成了公钥,就直接拷贝到另外一台计算机上,因此才想到这个问题:

如果在不建立SSH信任之前就能判断一个远程计算机上的某个文件是否存在?Perl版本的我找到一个,但是Shell版本的不知道该如何写、


   

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2012-03-13 09:51 |只看该作者
spawn ssh root@172.16.217.129 "test -f /root/.ssh/id_rsa||echo xxxxxxxxxxxxxooooooooooo"
....
.....
expect xxxxxxxxxxxxxooooooooooo { puts no }

或者

expect xxxxxxxxxxxxxooooooooooo { exit 55 }

........
EOF
if [ $? -eq 55 ];then
        echo "no"
else

论坛徽章:
0
7 [报告]
发表于 2012-03-13 10:00 |只看该作者
回复 6# waker


Waker的答案是我想要的哈,,刚刚在坛子翻到你回答的这个帖子

http://bbs.chinaunix.net/thread-1517056-1-1.html

你就来协助我了,太感激了,还是对expect命令不熟悉,继续去看文档了:wink:


   

论坛徽章:
0
8 [报告]
发表于 2012-03-13 10:47 |只看该作者
回复 6# waker

好像有点儿小问题,请教下:

#! /bin/sh

expect <<EOF

spawn ssh root@172.16.217.129 "test -f /root/.ssh/id_rsa||echo xxxxxxxxxxxxxooooooooooo"

expect {
        "password:" {
                 send "123456\n";exp_continue
        }
}      

expect xxxxxxxxxxxxxooooooooooo { exit 55 }

EOF


if [ $? -eq 55 ];then
        echo "File not exist"
else
        echo "File exist"
fi

我用expect -d跟踪的结果如下:

expect version 5.43.0
argv[0] = expect  argv[1] = -d  
set argc 0
set argv0 "expect"
set argv ""
executing commands from command file
spawn ssh root@172.16.217.129 test -f /root/.ssh/id_rsa||echo xxxxxxxxxxxxxooooooooooo
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {7217}

expect: does "" (spawn_id exp6) match glob pattern "password:"? no
root@172.16.217.129's password:
expect: does "root@172.16.217.129's password: " (spawn_id exp6) match glob pattern "password:"? yes
expect: set expect_out(0,string) "password:"
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) "root@172.16.217.129's password:"
send: sending "123456\n" to { exp6 }
expect: continuing expect

expect: does " " (spawn_id exp6) match glob pattern "password:"? no


expect: does " \r\n" (spawn_id exp6) match glob pattern "password:"? no
expect: read eof
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) " \r\n"
expect: spawn id exp6 not open
    while executing
"expect xxxxxxxxxxxxxooooooooooo { exit 55 } "
File exist

   

论坛徽章:
0
9 [报告]
发表于 2012-03-13 11:05 |只看该作者
我在第一个expect里加入了 eof { exit }问题得到解决,但还不是很明白具体原因、

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 2012-03-13 11:27 |只看该作者
exp_continue把这个去掉,这个的意思是继续expect
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP