Как заняться конвертируемым содержимым в формат ниже?

  1. если / home - отдельный раздел, вы можете смонтировать его с помощью параметра noexec .

  2. Делая это, вы разрушаете (или пытаетесь) большую часть функциональности системы unix для своих пользователей, поскольку это отключает ВСЕ сценарии, написанные пользователем, а не только «вредоносные». Написание сценариев для выполнения работы - совершенно нормальное занятие для пользователей unix.

  3. Это по-прежнему не мешает им писать сценарии и выполнять их с помощью bash myscript.sh или perl myscript.pl и т. Д.

  4. Если у вас нет at минимум минимального доверия к своим пользователям, не давайте им оболочку и не давайте им оболочку с ограничениями, такую ​​как / bin / rbash вместо / bin / bash .

-3
11.07.2018, 00:22
3 ответа

Использование GNU Awk и взятие отсутствующих месяца и года из текущего времени:

gawk '
  BEGIN{
    OFS=","
    print "pid,name,tid,mod,state,appnbr,request,tasknbr,appctx,username"
  }
  NR>2 {
    split($4,a,"-")
    $4 = a[1] strftime("-%^b-%Y ", systime()) a[2]
    gsub(/:/,",",$6)
    print
  }' /root/file.txt

или пропустите файл и используйте его в канале

spsmon -state working -snapshot | gawk '...'

Пр.

$ gawk '
  BEGIN{
    OFS=","
    print "pid,name,tid,mod,state,appnbr,request,tasknbr,appctx,username"
  }
  NR>2 {
    split($4,a,"-")
    $4 = a[1] strftime("-%^b-%Y ", systime()) a[2]
    gsub(/:/,",",$6)
    print
  }' file.txt
pid,name,tid,mod,state,appnbr,request,tasknbr,appctx,username
39523,srv0051_0001_0,39642,20-JUL-2018 10:59:28,Working,820000,500196,500077
43137,srv0051_0005_0,43156,20-JUL-2018 10:59:28,Working,820000,4250501,840057
43895,srv0051_0006_0,43903,20-JUL-2018 10:59:28,Working,820000,4250501,840057
47523,srv0051_0009_0,47547,20-JUL-2018 10:59:28,Working,600005,4250501,4250846
48841,srv0051_0010_0,48851,20-JUL-2018 10:59:28,Working,600005,4290000,4290000
58182,srv0051_0020_0,58188,20-JUL-2018 10:59:28,Working,820000,4250501,840057
8297,srv0079_0008_0,8316,20-JUL-2018 10:59:27,Working,600005,3070001,3050012
4
28.01.2020, 05:18

Учитывая, что в исходных данных нет ничего, что могло бы быть источником 09-JUL-2018, я жестко запрограммировал это. При этом:

$  awk -F"[ \t]+|[:]" 'BEGIN { OFS=","; print "pid,name,tid,mod,state,appnbr,request,tasknbr,appctz,username" } NR>2 {print $1,$2,$3,"09-JUL-2018",$7, $8, $9, $10}' input
pid,name,tid,mod,state,appnbr,request,tasknbr,appctz,username
39523,srv0051_0001_0,39642,09-JUL-2018,Working,820000,500196,500077
43137,srv0051_0005_0,43156,09-JUL-2018,Working,820000,4250501,840057
43895,srv0051_0006_0,43903,09-JUL-2018,Working,820000,4250501,840057
47523,srv0051_0009_0,47547,09-JUL-2018,Working,600005,4250501,4250846
48841,srv0051_0010_0,48851,09-JUL-2018,Working,600005,4290000,4290000
58182,srv0051_0020_0,58188,09-JUL-2018,Working,820000,4250501,840057
8297,srv0079_0008_0,8316,09-JUL-2018,Working,600005,3070001,3050012
0
28.01.2020, 05:18

Использование sed:

 sed -e 's/  */,/g;s/:/,/g;/^-/d;s/data/appnbr,request,tasknbr,appctx,username/1;s/20-10:59:28/09-JUL-2018 12:36:10/g' /root/file.txt
0
28.01.2020, 05:18

Теги

Похожие вопросы