Chinaunix

标题: 一运行这个脚本就down机 [打印本页]

作者: shichunda    时间: 2010-07-04 23:08
标题: 一运行这个脚本就down机
本来想写个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 $*
作者: shichunda    时间: 2010-07-04 23:10
echo aa | sh id1.awk
不知道这么运行对不对
作者: Celinde    时间: 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,得用临时文件

求解 =.=
作者: Celinde    时间: 2010-07-05 00:52
LZ一运行就shutdown是因为有个用户叫halt .. 那个脚本有问题,把用户名当成系统命令给执行了,
由此可以知道LZ用的是root用户,嘿
作者: xborant    时间: 2010-07-05 10:24
我试了下,把
  1. if("id "shuzu | getline)
复制代码
改成
  1. cmd="id " shuzu
  2. if(cmd | getline)
复制代码
就可以。不知道什么原因
作者: shichunda    时间: 2010-07-05 21:47
LZ一运行就shutdown是因为有个用户叫halt .. 那个脚本有问题,把用户名当成系统命令给执行了,
由此可以知 ...
Celinde 发表于 2010-07-05 00:52



    没错,sudo太麻烦,不喜欢。
才一天没上网,第一页就找不到帖子了,挺火!
作者: shichunda    时间: 2010-07-05 22:11
我试了下,把改成就可以。不知道什么原因
xborant 发表于 2010-07-05 10:24



  还真是啊!
为什么会这样啊?
期待牛人答复!
作者: li2002    时间: 2010-07-06 11:17
本帖最后由 li2002 于 2010-07-06 11:18 编辑

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

应该加个括号

("id "shuzu)|getline
应该就正确了
作者: bbgg1983    时间: 2010-07-06 11:24
回复 8# li2002


    学习了
作者: shichunda    时间: 2010-07-06 15:18
if("id "shuzu | getline)
这种写法就是
shuzu|getline

应该加个括号

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



    那以前的写法"id "shuzu | getline,这里边的"id "如何解释呢?
作者: shichunda    时间: 2010-07-08 19:08
问题还没完呢,得顶起来




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