帮忙编写一个linux(ubuntu)下的小程序??
谁能帮忙写一个linux(ubuntu)的小程序啊?估计用shell就可以完成编程。笔记本电脑最好不要长期连续使用。希望这个程序完成以下功能:1开机后自动执行。2针对用户...
谁能帮忙写一个linux(ubuntu)的小程序啊?估计用shell就可以完成编程。
笔记本电脑最好不要长期连续使用。希望这个程序完成以下功能:1开机后自动执行。
2针对用户user,当他使用一次使用电脑达到3小时后,临时禁用该用户,并强制关机。(禁用该用户应该只有root用户才有权力吧。当使用3小时时是不是应该注销掉普通用户user,自动登陆root,然后用他的权力把user自动临时禁用?可以放心这个user极不了解linux,所以他不会再自动登陆root后做出什么有害的操作。)
3在自动关机前弹出信息。随便敷衍他一下关机的原因。
4如果user单次使用不超过3小时,但一日累积使用达到6小时后同样禁用这个帐户并关机。
5在电脑所有者(我)以myubuntu的用户名登陆后,自动获取root权限并对user解除禁用,然后再切换到无root权限的状态。如果一天user累计使用达到6小时,则这一天并不解除禁用,而在第二天解除对user的禁用。
要求:把代码给我,并解释一下各句的含义。说清楚写好后应该放在哪一个目录下,谢谢!!!!!!!
另外,有一个问题(回答这个问题也可以):我们学校宿舍的网速超慢!!才几时kb/s,除了浏览网页什么都干不了。而且据说校园网用linux上网有困难,这是怎么回事啊??具体说一说这一点!!!
再就是他们说ubuntu太依赖于网络,没网络它的易用性就没了,由于学校宿舍网速这么慢就算勉强上了网也很难下载安装软件。只好先从别处下到u盘里,再转到自己机器上,这样没了apt-get,很麻烦吧???
有人没网络就不要用ubuntu了,是吧???那用什么好呢???
看来这个问题要无果而终了哦 展开
笔记本电脑最好不要长期连续使用。希望这个程序完成以下功能:1开机后自动执行。
2针对用户user,当他使用一次使用电脑达到3小时后,临时禁用该用户,并强制关机。(禁用该用户应该只有root用户才有权力吧。当使用3小时时是不是应该注销掉普通用户user,自动登陆root,然后用他的权力把user自动临时禁用?可以放心这个user极不了解linux,所以他不会再自动登陆root后做出什么有害的操作。)
3在自动关机前弹出信息。随便敷衍他一下关机的原因。
4如果user单次使用不超过3小时,但一日累积使用达到6小时后同样禁用这个帐户并关机。
5在电脑所有者(我)以myubuntu的用户名登陆后,自动获取root权限并对user解除禁用,然后再切换到无root权限的状态。如果一天user累计使用达到6小时,则这一天并不解除禁用,而在第二天解除对user的禁用。
要求:把代码给我,并解释一下各句的含义。说清楚写好后应该放在哪一个目录下,谢谢!!!!!!!
另外,有一个问题(回答这个问题也可以):我们学校宿舍的网速超慢!!才几时kb/s,除了浏览网页什么都干不了。而且据说校园网用linux上网有困难,这是怎么回事啊??具体说一说这一点!!!
再就是他们说ubuntu太依赖于网络,没网络它的易用性就没了,由于学校宿舍网速这么慢就算勉强上了网也很难下载安装软件。只好先从别处下到u盘里,再转到自己机器上,这样没了apt-get,很麻烦吧???
有人没网络就不要用ubuntu了,是吧???那用什么好呢???
看来这个问题要无果而终了哦 展开
4个回答
展开全部
你好~
你说的那个没功夫给你整
给你这个吧用SHELL写的
如何远程杀死僵进程?
所谓“僵进程”是指处于睡眠中,而且没用的进程。在进行并行计算时经常会有僵进程产生。由于用 top 看不到“僵进程”,所以写了如下一个叫做“rkill”的 shell 文件:
#!/bin/tcsh
echo " Input start number of node: "
set N1="$<"
echo " Input end number of node: "
set N2="$<"
echo " Input the NAME of program"
set pname="$<"
echo "**********************************************************"
while($N1 <= $N2)
set h='t'$N1
set ppid=`rsh $h ps -ef | grep $pname | awk '{print $2}' `
echo "rsh $h kill $ppid"
rsh $h kill $ppid
@ N1++
end
echo "**********************************************************"
如何将一个 index 文件中的空链接删除?
在目录 /doc/Art_and_Photos/photo/NASA-Astronomy_Picture_of_the_Day 中只有有限的几个文件,而 archivepix.html 文件中却链接了两千多个文件,我们的目标就是要把不存在的文件链接删除掉。
#!/bin/tcsh -f
# 从当前目录中查找有哪些可用文件。find 不支持正则表达式 \{\}
set tmp=`find . -type f -maxdepth 1 -name "ap[0-9][0-9][0-9][0-9][0-9][0-9].html" `
# 将查找结果 ./ap000303.html 转换为 ap000303.html
set ff1=`echo $tmp | sed -e 's/\.\/\(ap[0-9]\{6\}\.html\)/\1/g' `
# 在文件 archivepix.html 中查找包含类似 ap000303.html 的行,并将其导入临时文件 ftmp 中
grep 'ap[0-9]\{6\}\.html' archivepix.html >ftmp
# 将 ftmp 中的每一行转换为 ap000303.html 的形式,这样 ff1 和 ff2 中的字符串在形式上就是相同的了。
set ff2 = ` sed -e 's/.*\(ap[0-9]\{6\}\.html\).*/\1/g' ftmp`
rm ftmp -f
# 比较变量 ff1 和 ff2 的内容,如果一个字符串只存在于 ff2 中,那么就把文件 archivepix.html 中含有
# 该字符串的行删除掉。
foreach f2 ($ff2)
echo $f2
set flag=0
foreach f1 ($ff1)
if ($f2 == $f1) then
set flag=1
endif
end
if($flag == 0) then
sed -e '/'$f2'/d' archivepix.html >ftmp # 此句最关键之处在于'$f2'可用于正则表达式。
mv ftmp archivepix.html -f
endif
end
如何将一个目录中的所有文件链接到网页中?
只要将下列程序的输出导到一个文件中,再将其拷至网页的相应位置就可以了。这里最关键的是看双引号如何输出(\")。
#!/bin/tcsh -f
set dd = "/doc/Art_and_Photos/Flash/flash/AGui"
set ffff = `find $dd -type f `
set n=0
foreach f ($ffff)
@ n++
echo $f
echo '< a href='\"$f\"'<'$n',</a>'>> AGui.html
end
如何为一堆文件换名字?
在吴老师的笔记心得中介绍了张林波的高招,但那是 bash 的,而且是以命令行形式给出的。为了便于理解,我将其改写为 tcsh 格式,并将其置于脚本文件之中,更利于使用。
#!/bin/tcsh -f # -f 说明直接运行该文件,而不会先运行 .cshrc 进行初始化
rm tmp_file -f # 确保该文件不存在
foreach fold (*.jpg.*)
set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" ` # 精华之处
echo "mv $fold $fnew -f " >>tmp_file
end
chmod a+x tmp_file
./tmp_file
rm tmp_file -f
在这个脚本文件中,关键是“精华之处”。它的意义是:首先将要修改的文件名($fold)通过管道( | ) 传给流编辑器(sed),流编辑器对文件名进行处理,其各项的具体意义为:
set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" `
sed -e 命令+选项 表示允许多点编辑
s/re/string/ 用 string 替换正则表达式 re
/\.jpg\.\(.*\)/ “\.”表示一个真正的点,“\.jpg\.” 代表文件名中的“ .jpg.”;“\(.*\)” 中的‘.’匹配一个非换行符的字符,‘*’匹配 0 个或多个“先前”字符,
它与 shell 的通配符完全不同,shell 的通配符代表 0 个或多个“任意”字符。
“.*”所代表的内容被设为“标签 1”,可在需要的地方用“\1”引用。值得注意
的是:“.*”决不能用“*”来代替,因为“*”将表示任意个“\.”。
/-\1.jpg/ “\1”代表“标签 1”的内容
g 表示行内全面替换
这里还有一个地方需要提醒,那就是将 `echo ...` 引起来的不是单引号,而是键盘左上角标有 “~ ` ”上的撇号.
如何解决网页中字体放大时出现重叠的问题?
方案一:适用于单层目录
#!/bin/tcsh -f
set dir=`ls .`
foreach d ($dir)
if( -d $d) then # 判断是否为目录
cd $d
echo "cd $d"
foreach f (*.htm *.html)
sed -e '/[0-9]pt/d' $f > ftmp # 删除所有包含 9pt、12pt 等关键词的行
mv ftmp $f -f
end
cd ..
endif
end
方案二:适用于多层目录
#!/bin/tcsh -f
set SearchPath = "/doc/Reading/everything/武侠/梁羽生"
set files=`find $SearchPath -type f -name "*.htm*" `
foreach f ($files)
echo $f
sed -e '/[0-9]pt/d' $f > ftmp
mv ftmp $f -f
end
你说的那个没功夫给你整
给你这个吧用SHELL写的
如何远程杀死僵进程?
所谓“僵进程”是指处于睡眠中,而且没用的进程。在进行并行计算时经常会有僵进程产生。由于用 top 看不到“僵进程”,所以写了如下一个叫做“rkill”的 shell 文件:
#!/bin/tcsh
echo " Input start number of node: "
set N1="$<"
echo " Input end number of node: "
set N2="$<"
echo " Input the NAME of program"
set pname="$<"
echo "**********************************************************"
while($N1 <= $N2)
set h='t'$N1
set ppid=`rsh $h ps -ef | grep $pname | awk '{print $2}' `
echo "rsh $h kill $ppid"
rsh $h kill $ppid
@ N1++
end
echo "**********************************************************"
如何将一个 index 文件中的空链接删除?
在目录 /doc/Art_and_Photos/photo/NASA-Astronomy_Picture_of_the_Day 中只有有限的几个文件,而 archivepix.html 文件中却链接了两千多个文件,我们的目标就是要把不存在的文件链接删除掉。
#!/bin/tcsh -f
# 从当前目录中查找有哪些可用文件。find 不支持正则表达式 \{\}
set tmp=`find . -type f -maxdepth 1 -name "ap[0-9][0-9][0-9][0-9][0-9][0-9].html" `
# 将查找结果 ./ap000303.html 转换为 ap000303.html
set ff1=`echo $tmp | sed -e 's/\.\/\(ap[0-9]\{6\}\.html\)/\1/g' `
# 在文件 archivepix.html 中查找包含类似 ap000303.html 的行,并将其导入临时文件 ftmp 中
grep 'ap[0-9]\{6\}\.html' archivepix.html >ftmp
# 将 ftmp 中的每一行转换为 ap000303.html 的形式,这样 ff1 和 ff2 中的字符串在形式上就是相同的了。
set ff2 = ` sed -e 's/.*\(ap[0-9]\{6\}\.html\).*/\1/g' ftmp`
rm ftmp -f
# 比较变量 ff1 和 ff2 的内容,如果一个字符串只存在于 ff2 中,那么就把文件 archivepix.html 中含有
# 该字符串的行删除掉。
foreach f2 ($ff2)
echo $f2
set flag=0
foreach f1 ($ff1)
if ($f2 == $f1) then
set flag=1
endif
end
if($flag == 0) then
sed -e '/'$f2'/d' archivepix.html >ftmp # 此句最关键之处在于'$f2'可用于正则表达式。
mv ftmp archivepix.html -f
endif
end
如何将一个目录中的所有文件链接到网页中?
只要将下列程序的输出导到一个文件中,再将其拷至网页的相应位置就可以了。这里最关键的是看双引号如何输出(\")。
#!/bin/tcsh -f
set dd = "/doc/Art_and_Photos/Flash/flash/AGui"
set ffff = `find $dd -type f `
set n=0
foreach f ($ffff)
@ n++
echo $f
echo '< a href='\"$f\"'<'$n',</a>'>> AGui.html
end
如何为一堆文件换名字?
在吴老师的笔记心得中介绍了张林波的高招,但那是 bash 的,而且是以命令行形式给出的。为了便于理解,我将其改写为 tcsh 格式,并将其置于脚本文件之中,更利于使用。
#!/bin/tcsh -f # -f 说明直接运行该文件,而不会先运行 .cshrc 进行初始化
rm tmp_file -f # 确保该文件不存在
foreach fold (*.jpg.*)
set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" ` # 精华之处
echo "mv $fold $fnew -f " >>tmp_file
end
chmod a+x tmp_file
./tmp_file
rm tmp_file -f
在这个脚本文件中,关键是“精华之处”。它的意义是:首先将要修改的文件名($fold)通过管道( | ) 传给流编辑器(sed),流编辑器对文件名进行处理,其各项的具体意义为:
set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" `
sed -e 命令+选项 表示允许多点编辑
s/re/string/ 用 string 替换正则表达式 re
/\.jpg\.\(.*\)/ “\.”表示一个真正的点,“\.jpg\.” 代表文件名中的“ .jpg.”;“\(.*\)” 中的‘.’匹配一个非换行符的字符,‘*’匹配 0 个或多个“先前”字符,
它与 shell 的通配符完全不同,shell 的通配符代表 0 个或多个“任意”字符。
“.*”所代表的内容被设为“标签 1”,可在需要的地方用“\1”引用。值得注意
的是:“.*”决不能用“*”来代替,因为“*”将表示任意个“\.”。
/-\1.jpg/ “\1”代表“标签 1”的内容
g 表示行内全面替换
这里还有一个地方需要提醒,那就是将 `echo ...` 引起来的不是单引号,而是键盘左上角标有 “~ ` ”上的撇号.
如何解决网页中字体放大时出现重叠的问题?
方案一:适用于单层目录
#!/bin/tcsh -f
set dir=`ls .`
foreach d ($dir)
if( -d $d) then # 判断是否为目录
cd $d
echo "cd $d"
foreach f (*.htm *.html)
sed -e '/[0-9]pt/d' $f > ftmp # 删除所有包含 9pt、12pt 等关键词的行
mv ftmp $f -f
end
cd ..
endif
end
方案二:适用于多层目录
#!/bin/tcsh -f
set SearchPath = "/doc/Reading/everything/武侠/梁羽生"
set files=`find $SearchPath -type f -name "*.htm*" `
foreach f ($files)
echo $f
sed -e '/[0-9]pt/d' $f > ftmp
mv ftmp $f -f
end
展开全部
的确有点难,我大概考虑了个思路,不只是要用脚本,跟你说一下:
1.开机自动执行这个功能需要改/etc/inittab,在最后添加上运行你的脚本。
2&3.怎么判断开机了3个小时我不会,但是不登录root禁用用户是好办的,用sudo chage就能办到,至于关机,shutdown本身就能设置关机消息;提示你一个信息,chage能改用户到什么时间后登录时间用完,系统会自动使这个账户实效,这个功能应该利用。
4.还是利用chage改用户登录时间的问题,如果这里用这个功能,上面一条建议就不能利用了,或者你把这个功能一并做在上面一条里,多个条件判断。
5.还是sudo chage,估计要用到at或者batch,这两条命令也是计划任务,at有个特点,就是如果过了今天执行任务的时间,那么第二天同一时间它会执行。
怎么写你还是另外请教高人吧,我只是模糊有个思路,一时兴起写下这些,最近忙认证考试,没精力帮你具体想了,你的这个问题属应用,不属学习范畴的简单问题,而且我还没做过实际管理的工作,也没经验,帮你只能帮到这儿,不好意思:P
补充回答:
我用的是debian,apt源我用的是http://debian.cn99.com/
我感觉这个源对教育网并不慢啊,斑图应该也能用debian的源
1.开机自动执行这个功能需要改/etc/inittab,在最后添加上运行你的脚本。
2&3.怎么判断开机了3个小时我不会,但是不登录root禁用用户是好办的,用sudo chage就能办到,至于关机,shutdown本身就能设置关机消息;提示你一个信息,chage能改用户到什么时间后登录时间用完,系统会自动使这个账户实效,这个功能应该利用。
4.还是利用chage改用户登录时间的问题,如果这里用这个功能,上面一条建议就不能利用了,或者你把这个功能一并做在上面一条里,多个条件判断。
5.还是sudo chage,估计要用到at或者batch,这两条命令也是计划任务,at有个特点,就是如果过了今天执行任务的时间,那么第二天同一时间它会执行。
怎么写你还是另外请教高人吧,我只是模糊有个思路,一时兴起写下这些,最近忙认证考试,没精力帮你具体想了,你的这个问题属应用,不属学习范畴的简单问题,而且我还没做过实际管理的工作,也没经验,帮你只能帮到这儿,不好意思:P
补充回答:
我用的是debian,apt源我用的是http://debian.cn99.com/
我感觉这个源对教育网并不慢啊,斑图应该也能用debian的源
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我可以试着帮你写
后天我要考 奥赛 所以等下一星期开始吧..
后天我要考 奥赛 所以等下一星期开始吧..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |