если / home
- отдельный раздел, вы можете смонтировать его с помощью параметра noexec
.
Делая это, вы разрушаете (или пытаетесь) большую часть функциональности системы unix для своих пользователей, поскольку это отключает ВСЕ сценарии, написанные пользователем, а не только «вредоносные». Написание сценариев для выполнения работы - совершенно нормальное занятие для пользователей unix.
Это по-прежнему не мешает им писать сценарии и выполнять их с помощью bash myscript.sh
или perl myscript.pl
и т. Д.
Если у вас нет at минимум минимального доверия к своим пользователям, не давайте им оболочку и не давайте им оболочку с ограничениями, такую как / bin / rbash
вместо / bin / bash
.
Использование 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
Учитывая, что в исходных данных нет ничего, что могло бы быть источником 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
Использование 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