免费注册 查看新帖 |

Chinaunix

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

一运行这个脚本就down机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-04 23:08 |只看该作者 |倒序浏览
本来想写个awk脚本,让他对/etc/passwd中的第一列的每个user执行id,之后将输出保存到一个文件,结果一运行就被shutdown,大家帮忙看看这个脚本该如何修改,还有,为什么会down?

awk '
        FILENAME=="passwd"{
                split($0,array,":")
                entry[NR]=array[1]
                next
        }

END{        print "hello"
        for(i=1;i<=NR;++i){
            if(i in entry){
                shuzu=entry[i]
                if("id "shuzu | getline)
                        print $0 > "tmp_out"
                else
                        exit 80
#                print shuzu
            }
        }
}' passwd $*

论坛徽章:
0
2 [报告]
发表于 2010-07-04 23:10 |只看该作者
echo aa | sh id1.awk
不知道这么运行对不对

论坛徽章:
0
3 [报告]
发表于 2010-07-05 00:49 |只看该作者
awk '
        FILENAME=="passwd"{
                split($0,array,":")
                entry[NR]=array[1]
                next
        }

END{        print "hello"
        for(i=1;i<=NR;i++){
            if(i in entry){
                shuzu=entry[i]
                system ("id " shuzu " >>tmp_log")

            }
        }
}' passwd


""调用系统命令可以用getline获取输出,但是我不知道怎么把awk变量传递到""里面
用system函数又没办法直接用getline,得用临时文件

求解 =.=

论坛徽章:
0
4 [报告]
发表于 2010-07-05 00:52 |只看该作者
LZ一运行就shutdown是因为有个用户叫halt .. 那个脚本有问题,把用户名当成系统命令给执行了,
由此可以知道LZ用的是root用户,嘿

论坛徽章:
0
5 [报告]
发表于 2010-07-05 10:24 |只看该作者
我试了下,把
  1. if("id "shuzu | getline)
复制代码
改成
  1. cmd="id " shuzu
  2. if(cmd | getline)
复制代码
就可以。不知道什么原因

论坛徽章:
0
6 [报告]
发表于 2010-07-05 21:47 |只看该作者
LZ一运行就shutdown是因为有个用户叫halt .. 那个脚本有问题,把用户名当成系统命令给执行了,
由此可以知 ...
Celinde 发表于 2010-07-05 00:52



    没错,sudo太麻烦,不喜欢。
才一天没上网,第一页就找不到帖子了,挺火!

论坛徽章:
0
7 [报告]
发表于 2010-07-05 22:11 |只看该作者
我试了下,把改成就可以。不知道什么原因
xborant 发表于 2010-07-05 10:24



  还真是啊!
为什么会这样啊?
期待牛人答复!

论坛徽章:
0
8 [报告]
发表于 2010-07-06 11:17 |只看该作者
本帖最后由 li2002 于 2010-07-06 11:18 编辑

if("id "shuzu | getline)
这种写法就是
shuzu|getline

应该加个括号

("id "shuzu)|getline
应该就正确了

论坛徽章:
0
9 [报告]
发表于 2010-07-06 11:24 |只看该作者
回复 8# li2002


    学习了

论坛徽章:
0
10 [报告]
发表于 2010-07-06 15:18 |只看该作者
if("id "shuzu | getline)
这种写法就是
shuzu|getline

应该加个括号

("id "shuzu)|getline
应该就 ...
li2002 发表于 2010-07-06 11:17



    那以前的写法"id "shuzu | getline,这里边的"id "如何解释呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP