我一直是一个躁动不安的学生,总是想利用诸如...之类的机会,例如从老师的USB记忆棒或类似的东西复制学期考试。 当我在高中(计算机专业)时,我想对“某物”进行编程,以实现以下目的:
- 检测何时将USB设备连接到教室计算机
- 将所有内容从该设备复制到您的计算机
这样可以让我早得多地参加考试,只需要老师将他的USB存储器(pendrive)连接到计算机即可。
不幸的是,在我的学院里,这些计算机都装有Windows,而且……我从未而且从未学习过为此操作系统编程。
但是,现在我使用Linux(显然不是吗?大声笑!),而且由于这些年来我一直能够获得知识,所以现在可以! 我已经可以使用Linux来实现
也就是说,我编写了一个简单的脚本,该脚本执行以下操作:
1. 创建文件夹/home/.USBDRIVES/
2. 它每5秒检查一次计算机是否连接了USB设备(或CD / DVD)。
3. 如果已连接,它将在/home/.USBDRIVES/中创建一个文件夹,其名称为USB(例如:memory-2gb),并且还将复制所有文件.doc,.pdf等(这是清单)到您刚刚创建的文件夹。
4. 如果没有连接USB,则只需等待5秒钟即可开始再次进行我上面解释的检查😀
这是脚本和包含要复制的格式的文件:
为了使脚本可以正常工作,最好以管理员权限(root)启动该脚本,因为很明显它需要与计算机一起启动,这样我们可以确保计算机是否与计算机一起启动。重新启动或关闭后,当我再次启动脚本时,它将可以正常工作,准备从任何USB中提取我们想要的内容😉
让我们打开一个终端...一旦打开...
1. 假设我们两个文件都在 /选择/ (/opt/usb-spy.sh y /opt/usb-spy.files),我们必须为其赋予执行权限:
sudo chmod +x /opt/usb-spy.sh
2. 我们打开文件 在/etc/rc.local :
sudo nano /etc/rc.local
3. 在上面的最后一行(退出0) 下一个:
/opt/usb-spy.sh&
4. 现在我们按[Ctrl] + [X]保存并退出文件,我们按[S]或[Y](取决于系统语言),然后按[Enter]。 这足以保存我们所做的更改。
瞧,当我们打开计算机时,这足以使脚本以root身份启动。
确认文件很重要 USB-spy.files 与以下目录位于同一目录中 USB-spy.sh 😉
现在...我将解释一下脚本的内部工作原理,因为我知道这里有很多Bash爱好者
Q: 脚本如何知道已连接USB设备? 答:在我们系统的/ etc / mtab文件中,是系统上安装的设备或分区。 通过脚本的第23行,可以知道是否连接了USB(使猫成为mtab和grep媒体)
问:是的,但是 脚本如何知道cat和grep是否向我们返回了一些数据? 答:通过 如果,那么,否则循环 从第24行开始。
Q: 如何使其仅复制具有所需扩展名的文件? (.doc,.pdf等)
答:在第34行使用rsync和各种参数。简单地说,我使用rsync仅复制与usb-spy.files过滤器匹配的文件,每行可以说是一个过滤器。 我也传递参数 --prune-empty-dirs
进行rsync,因此不会为我创建空目录。
实际上没有太多解释,脚本非常容易理解:)
如果有人有任何疑问或疑问,投诉,想法或建议,请这样说,我保证会尽力帮助他们。
好吧,我当时正在考虑添加以下内容:该脚本仅用于教育目的,请勿与有害文件一起使用»……但是……该死!把它用于您想要的任何东西,是时候让学生对压迫我们的老师具有某种优势了😀
问候
骗子¬¬
XDDDD
完全没有……如果您确定要在某个时候做类似的事情……哈哈。
您从一次流行测验中救了我😀…现在,您的«KZKG ^ Gaara»您是我的上帝…赞美您!
您好,非常好的脚本,但是以兆文件不存在,您可以将其发送到我的电子邮件中
Linux是1%,您说您从未学习过为Windows编程,所以辅导是针对linux系统的,我的问题是:找到使用Linux的老师进行辅导的可能性是什么?
该脚本或技巧是在不一定是个人或教授自己的计算机中“实现”的,只要它是大学或学院的任何计算机就足够了,那么只有通过X或X才能实现是教授将您的USB连接到该计算机的原因。
是的,它适用于Linux,但是许多大学在计算机实验室中都将Linux作为系统,并且可以通过LiveCD进行引导,而不必在PC上安装Linux🙂
关于1%,我建议您阅读这篇文章: https://blog.desdelinux.net/debunking-the-1-percent-myth-traducido-al-espanol/
大约30分钟内,巨大的陨石可能会掉落在大西洋上
看起来很有趣,必须尝试一下。
谢谢
它具有的实用程序不是一件好事,但是这样的脚本很有趣……因为您可以从中学习一些技巧,例如如何知道连接的USB,分区的大小等etc
原创且很好解释的文章KZKG ^ Gaara。 干杯!
谢谢
多么大胆!!!!,您敢将其写在博客OO上,我不知道该怎么想,难道就是有人不喜欢他吗?
没礼貌为什么?
我认为,尽管脚本的目的或动机可能不如我的其他贡献那么认真,但脚本,其代码行和编程逻辑确实有很多贡献。
您可以利用此脚本中的几件事:
1.如何知道分区的大小以及这是一个变量。
2.如何检查是否已连接USB,并提取其路径和名称。
3. if-then-else和while循环。
无论如何,我并不认为这完全没有用。
我认为您误解了我的评论,是指在您文章的开头,
“我一直是一个躁动不安的学生,一直想利用诸如……之类的机会,例如从老师的USB记忆棒或类似的东西中复制学期考试。” 如果我说的话困扰您,希望您能对不起,这不是我的意图。
多么棒的博客,好的文章,好的读者,用户表示歉意……这是天堂,没有巨魔。
谢谢 ^ - ^
我们为迄今为止所取得的成就感到自豪,这个社区真的感到自豪……能成为这一切的一部分真是太好了😀
不,不,我一点都没有 xD
是的,嘿嘿,这是我误解您的评论的错误,嘿嘿,对不起
现在没有什么道歉来自我,我必须洗脸看看我是否已经完成唤醒……从我所看到的来看,我还不是100%的哈哈哈。
问候朋友🙂
很好的人xD
我希望我的大学计算机具有Linux muhahahjaja。
好文章!
但是,只要是想在Windows中模仿它的人,都会更容易,因为如果您没有要使用它的计算机上的root访问权限,就不能将它“永远”保留下来。 使用Windows不会发生😉
很好呵呵。
这个想法很好,它只有必须使用Root特权的弱点
好吧,实际上,您不需要像这样的root用户……如果您向脚本声明该文件夹不会像我所说的那样是/home/.USBDRIVES,它说,例如:/ home / usuario /。 USBDRIVES ...然后用“用户”执行脚本就足够了
这是个好主意,但我认为您可以避免修改rc.local并通过crontab每分钟运行一次,因此避免了以root身份运行其余部分的问题,即使它没有运行影响很大,您每隔5秒钟便无用地消耗了PC的内存,以检查USB是否存在(即使不是)。 那是我的观点
我的意思是,每1分钟检查一次,对吧? 我之所以没有这样做,是因为……如果在不到1分钟的时间内连接和断开USB,该怎么办? 😀
我更喜欢每5秒执行一次,以确保真正“捕获”所有USB😉
如果我误解了你,请纠正我🙂
问候和欢迎。
是的,每分钟都要通过cron进行检查,但是每个人都有不同的解决问题的方式,无非就是看代码,创建之前检查/home/.USBDRIVES文件夹是否已经存在更好它只是一个建议
问候
是的,这是我注意到的一个细节,但是...我懒得解决它,哈哈!
同样,我可以放置一个日志,其中显示已复制的文件(每个设备的单独日志),甚至可以通过电子邮件发送此日志(使用某种方式,通过终端发送电子邮件的方式,我已经在此放置了此文件) )...但是就像我告诉你的那样,这让我有些懒惰^-^ U
哈哈哈哈太棒了。
啊! 因此,您的软件可以用于邪恶。 大声笑!!! 🙂
这个技巧很好,但是...如果您想在脚本完成复制其内容之前卸载USB,该怎么办? 在这种情况下,它会抱怨它正在使用中,并且会发现有问题。 🙂
实际上,系统将不允许卸载USB,因为“某物”将使用它。
精确! 那时,奥斯卡的教授认为他已经发现了Linux病毒。 大声笑!! 🙂
你让我想起曾经做过类似的事情(如果在我的Uni上有linux / windows,我在Uni上做了),但是我做了一个生成数千个文件夹的C程序。 我将USB装点给了一个插入USB的人。 计算机中心经理很惊讶! 他以为自己在linuxx muajajajaja中发现了一种病毒...啊……那是什么时候=)
和病毒有什么区别?
我远程进入他的USB并运行了程序😛
哈哈哈哈,所以这是一个hack XD
????
hehehehehe所以您在Linux中发现了病毒吧? … 大声笑!!
xD不适用于我,如果我尝试从终端运行它,它会告诉我:./usb-spy.sh:第31行:[:-lt:一元运算符应为
这行似乎有问题:if [$ USBSIZE -lt 15664800]; 然后
但是我不知道它是什么,因为它也不会创建.USB目录。
如果可以解决,我可以找到一个有用的脚本。
尝试用/ bin / df替换df,并确保以root身份启动它。
好的,现在,如果它在主目录中创建了.USB文件夹,但它始终通过终端告诉我:“ ./ usb-spy.sh:第31行:[:-lt:期望一元运算符”,但它不会不要复制任何内容,在那一行必须有一些冲突,如果有人看到我的帮助,我深表感谢。
非常感谢。
挂载USB时,可以放置/ etc / mtab文件的内容吗?
当然可以了:
/ dev / sda12 / ext4 rw,错误=重新安装-ro 0 0
proc / proc proc rw,noexec,nosuid,nodev 0 0
sysfs / sys sysfs rw,noexec,nosuid,nodev 0 0
无/ sys / fs /保险丝/连接保险丝rw 0 0
无/系统/内核/调试debugfs rw 0 0
无/系统/内核/安全性security fs rw 0 0
udev / dev devtmpfs rw,模式= 0755 0 0
devpts / dev / pts devpts rw,noexec,nosuid,gid = 5,mode = 0620 0 0
tmpfs /运行tmpfs rw,noexec,nosuid,大小= 10%,模式= 0755 0 0
无/运行/锁定tmpfs rw,noexec,nosuid,nodev,大小= 5242880 0 0
无/运行/ shm tmpfs rw,nosuid,nodev 0 0
binfmt_misc / proc / sys / fs / binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
/ dev / sdb1 / media / DOCU403 vfat rw,nosuid,nodev,uid = 1000,gid = 1000,短名称= m $
最后几行是已安装的USB / dev / sdb1的行
让我们看看是否知道。 🙂
给我们df命令的输出。 并尝试添加以下行:
回声$ USBSIZE
如果出现问题,就在前面,告诉我们启动脚本时会发生什么。 它看起来应该像这样:
USBSIZE =`/ bin / df | grep $ USBDEV | awk {'print $ 2'}`
回声$ USBSIZE
如果[$ USBSIZE -lt 15664800]; 然后
以防万一,还要告诉我们哪个df命令的输出是什么。
好吧,部分地,df命令返回给我:
文件系统1K块已使用可用已使用%已安装在
/ dev / sda12 54082300 45246956 6125892 89%/
udev 2004028 4 2004024 1%/开发
tmpfs 805768 1180 804588 1%/运行
无5120 0 5120 0%/运行/锁定
无2014420 92 2014328 1 XNUMX XNUMX%/运行/ shm
/ dev / sdb1 1023200 322256 700944 32%/媒体/ DOCU 3
df返回我的命令:/ bin / df
然后,我将echo $ USBSIZE放入,结果是相同的,它不会打印任何新内容,但是来自以前的错误是,有趣的是,如果我放入500GB,则这是我正在测试的USB发生的情况外部硬盘驱动器是的,它返回屏幕上磁盘的大小,但是500大于if的16,因此对于硬盘,它什么也不做。
但是使用USB时,除了显示错误外,它什么也没做:./usb-spy.sh:第34行:[:-lt:一元运算符应为
好像它无法显示USB的大小,但是使用df命令可以得到它的大小。
感谢您的帮助,让我们看看是否可以得到它!
如果命令在这里看起来不太好,我会保留一个屏幕截图: http://i48.tinypic.com/j5dvn5.jpg
我看到在mtab中显示为挂载的路径为“ / media / DOCU403”,而在df中显示为“ / media / DOCU 3”。 这使grep找不到它,并且不返回大小。 尝试更改for的第一行,以使它们看起来像这样:
在cat / etc / mtab中的USBD | grep媒体| awk'{print $ 1}''';
do
USBDEV =`cat / etc / mtab | grep $ USBD | awk'{print $ 2}'''
USBSIZE =`/ bin / df | grep $ USBD | awk {'print $ 2'}`
更改包括将for变量的名称更改为USBD,将for行末尾的$ 2更改为$ 1,在do之后插入以USBDEV开头的行,并在开始的行中将USBDEV更改为USBD有了USBSIZE ...我希望我不要乱来。 🙂
这个想法是通过设备的名称而不是安装点来实现的。
问题在于,当设备中有空格时,在mtab中...在行上(特别是在空格处)放置了一些“奇怪”字符。
没有什么比更改$ USBDEV的指定方式更容易解决的了,在第28行更改它并像下面这样放置:
for USBDEV in `df | grep media | awk -F / {'print $5'}` ;
????
让我看看是否可以帮助您...
一元运算符之所以显示它,是因为它没有找到磁盘的大小,这是因为它没有检查它,这是因为它被称为
纪录片3
并将其作为两个值,如果是DOCU,则不会出现问题
也许这对你有用
http://www.itimetux.com/2012/11/manejar-archivos-o-carpetas-con-espacios-en-unix.html
问候🙂
确实,这就是问题所在,因为我刚刚尝试使用名称不带空格的单词(例如“类”)的其他USB,并且脚本可以正常工作,这就是为什么它可以识别硬盘而不是内存的原因,但是现在事情是知道我如何将引号放在脚本代码中,我是否必须将引号放入“ $ USBNAME”?
非常感谢Atheyus和Hexborg的帮助,它几乎完成了。
其实 森普罗姆斯 修复非常简单😉
第28行...更改为:
for USBDEV in `df | grep media | awk -F / {'print $5'}` ;
我刚刚进行了此更改的测试,它在标签/名称带有空格的设备上正常工作:)
现在,我将在脚本中进行更改以下载。
很好。 因此很容易修复。 🙂
哦,非常有创意😀万一需要,我会记下...
KZKG ^ Gaara,这种排列方式非常有效,现在,如果我将USB复制为带名称的空格,非常感谢大家的帮助,我将尝试看看是否可以使其在系统引导下运行。检查每个周期是否连接了USB。
最后,我们实现了xD。
^ - ^ ...很好
问题是我使用mtab来识别USB,我本可以简单地使用df ...我使用mtab是因为我认为向他们解释这个文件很有趣,他们知道这一点,但是我没有预见到这一点。带有大声笑的设备会发生错误。
您留下的任何疑问或问题,几乎每个人都喜欢提供帮助 xD
问候
当然。 我们是Linuxers。 我们总是得到它。 XD。
在教师的PC上安装一个守护程序,该守护程序会生成所有.doc,.docx,.odt,.pdf的记录,并通过邮件发送给您。 以及每隔一段时间扫描PC一次以查找所述注册表中的更改,新文件或删除内容,以及任何新闻都会通过邮件向您发送经过修改或新的文件。
无论如何,我认为执行该脚本(并且是ROOT !!!!)远非止步于自杀。 如果您有兴趣在拥有根权限和所有权限的情况下在PC上插入文件的任何人,都可以使生活和事情轻松700%。 请记住,Linux中不存在扩展名,Linux中的.doc可以与文本,视频或更糟的脚本相同(这是出于恶意)。
并非完全需要以root用户身份运行它,只需定义目录,将内容放置在运行用户具有写许可权的位置(例如,他们自己的家)的文件夹中就可以了。
关于危险文件...好吧,您可以在所有文件中添加一些会使用chmod -x的行,从而丢失执行属性。
我已经在开头添加了以下几行,以删除.USBDRIVES文件夹(如果已创建):
如果[-s $ PLACE]
然后rm -r $ PLACE
fi
这样,它不会产生“目录已存在”的错误,也就是说,如果您必须注意.USBDRIVES文件夹中没有任何我们不想删除的内容,因为它将删除它并放入另一个它的位置。
要添加新的文件格式,只需将其写入usb-spy? 例如.jpg .mp3等。
要添加新文件类型,请将其放在usb-spy.files中
查看文件的内容,您将看到如何添加它们,这很简单😉
如果我们在同一网络上,并且有一台教师的机器,那么有趣的事情是做一个网络映射,我们可能在机器上使用ssh,这样就可以在实验室机器上甚至在教师的机器上分发代码…… 这给了我很多想法:$
您好,我祝贺您的帖子和您的所有贡献,但是我有一个问题,看看是否有人可以为我解决这个问题:
我正在使用ubuntu 12.04LTS(与Unity一起)在PC上测试您的脚本,该脚本运行良好,但是由于我看到该脚本在首次运行后停止执行,因为已经创建了.USBDRIVES文件夹,所以我决定直接使用此论坛另一部分中发布的您的作者身份的其他脚本
在这里,我复制脚本供您查找自己
#!/斌/庆典
#
#-*-编码:UTF-8-*-
#该程序是免费软件。 您可以重新分发它和/或
#根据通用公共许可证的条款对其进行修改
由自由软件基金会发布的GNU#,
#所述许可证的版本2或(取决于您的
#选择)的任何更高版本。
#
#如果您对此应用程序进行了任何修改,
#应始终提及原始作者。
#
# Copyleft 2012, DesdeLinux.net {Ciudad Habana, Cuba}.
#作者:KZKG ^ Gaara
WHILE = 0
而[$ CONTROL = 0]; 做
cat / etc / mtab | grep媒体>> / dev / null
如果[$? -ne 0]; 然后
计数器= 0
其他
计数器= 1
:$ {USBDEV:=`cat / etc / mtab | grep媒体| awk'{print $ 2}'``»/»}
cp $ USBDEV / * /家庭/
fi
睡5
完成
退出0
主题是ubuntu12.04中的以下内容,它统一了最后一个脚本,并且可以正常工作,但是当我出于“ x”原因降级同一台计算机,并尝试使其在ubuntu 10.10中工作时,不能,我可以使其正常工作
一方面,它将引发错误,并且不会读取具有复合名称的笔式驱动器,例如:DATA-G,也不会复制具有复合名称的文件。 除了这个问题之外,我还有一个问题,就是仅在PC重新启动一次后才执行脚本。
问题是:如何使该脚本复制带有复合名称的笔式驱动器和文件
如果使用crontab或我可以安排它在特定时间工作
另一个细节,在Ubuntu 10.10中,因为它使用了Gnome,所以我想添加一些要考虑的约束,在为脚本赋予执行特权时,它必须位于/etc/init.d中,而不是/ etc /中。
(考虑到您必须使用sudo nautilus将其粘贴到终端)
另一方面,另一个维度是将其粘贴到此处以查看是否可以执行之后,必须在另一个终端中完成
sudo su(成为root)
密码
ls
cd /etc/init.d
ls -l
如果没有运行我们就会跳到那里
然后以与上一个终端相同的身份在同一终端或另一个终端中以root身份进入etc / init.d(即直到步骤cd / etc / init.d),如下所示:执行权限
须藤chmod + x script.sh
更新-rc.d script.sh的默认值为80
重新启动
我重复一遍,以便它在Ubuntu 10.10中自动执行,如果它是另一个版本(如12.04),则必须执行KZKG ^ Gaara所说的
最后一个问题,我想如何将内容(pendrive的最多3个子文件夹)复制到主目录或隐藏主目录,假设不是。
在代码中,我不必说
cp -r /media/*/*/*/home/.USBDRIVES/*
简而言之,要获得我想要的内容,脚本应如何保留?
因为我已经尝试将他们修改的行修改为usb-spy sh,但是将其修改为直接在home中记录并在修改的行上引发错误的其他行。 问候 。 谢谢
我无法下载第二个脚本
很好。 😉
如果我不执行您提出的步骤,会发生什么? 它不运行还是仅在没有root的情况下运行? 如果计算机具有可以在关机时恢复计算机的所有内部配置的系统,那么它可以工作吗? 谢谢。
如果系统的“内容”默认为/ home /文件夹,那么您必须修改脚本,该脚本的内容为/ home /将其更改为/ opt /或其他不受影响的文件夹。
我认为,为了改进脚本并避免入侵Pendrive,最佳的选择是确定类型和文件大小的优先级。 例如,最后保留100 MB或更大的大型文件。 或首先复制文件doc,docx,txt,pdf,xml等...等,然后将avi,mp4,mkv文件留给最后...
你好,这个主意很好。 我想问两个问题:
-可以反向进行吗? 为Penderiver创建一个脚本,该脚本可以连接到任何计算机并提取文件。
-适用于Windows操作系统?
你好,
我不确定如何连接Pendrive,同一PenDrive会自动执行其内部的脚本。
不,此脚本不适用于Windows🙂
好,谢谢您的回答,我将研究如何做
多么好的剧本。 我一直在分析它,这对我来说似乎很神奇,希望有一天我也可以制作这样的实用脚本。
尽管我提供的实用工具与您提出的用途不完全相同,但如果我将其用于一组用户的文件备份,那我所做的贡献将是我的不当行为……呵呵呵呵……。
当我尝试运行时,它给了我此错误行31:[:参数过多
删除该行以查看是否有效。 事实证明,这是限制设备尺寸的生产线。
删除它会复制我已安装的分区中的内容🙁
嗨,我是新手,我知道锅很旧,但我很喜欢,您的脚本很有教育意义
感谢您分享并详细解释...
波
朋友,您救了我,这足以分散老师的注意力并将USB引入我的笔记本电脑,然后hahahaaj通过了考试和所有笔记中的笔记
你能把脚本传递给我吗,链接断开了
您可以将链接断开的脚本传递给我
kzkggaara,您可以重新上传文件吗? 链接断开了:/,非常感谢
您可以上传链接吗?
听见! 叔叔! 您已经失去了赞美,可以再次提出来!
好! :v
好吧,我再次这样做是因为我不知道我想说的话是否上传了……。
嗯,就是您的链接已关闭,您可以上传它们!
链接断开!
请重新提交链接@usemoslinux我正在调查这个问题,谢谢!
脚本可以从这里下载。 我认为是一样的
https://mega.nz/#!yQR1BQTb!FoYoopZ11WSstQaqX1flxhm1t4jCKOI9jj8VIxIBrxk
好吧…。
从我的卑鄙角度来看,我认为这是一篇很棒的文章,而且,如果有人说您是骗子,那么我认为这取决于您使用该程序的目的。
我个人更喜欢了解linux的编程语言,因为我只是在Java中工作,谢谢您,我引起了我对了解更多有关linux语言的兴趣。
我谢谢你。
朋友您好,因为我发现使用此脚本的另一种方法是进行备份,所以我会跟您说说我有两个设备,一台摄像机和一个硬盘驱动器,我想要的是而不是记录文件,而是保存本地文件它们放在从摄像机到硬盘的外部硬盘中,但它给我一个错误,提示“参数过多”,您能帮我吗
它仅适用于具有Linux操作系统的设备吗?
请有人举起!
您好,我没有linux,在学校里他们使用Windows,我使用了USB捕获应用程序,我只从老师的内存中复制了5个文件,我怀疑USB具有保护作用,因为同一件事发生了两次,所以会有一些从USB减去完整信息的另一种方法?
如果您说的代码很简单,那就去吧,因为查看这些方法是否有效以查看是否已连接USB或分区的大小似乎很有趣。 可惜他们已经删除了mega.nz脚本,您可以重新上传吗?
问候和出色的工作,简单却实用,甚至可以自动从USB复制!
好!
我刚刚输入了您的博客文章,我真的很感兴趣。 发生的是,当您单击将您重定向到mega的.zip文件时,这意味着该文件不再可用。
我想知道您是否可以将应该下载的文件发送给我。
非常感谢和问候!
随着岁月的流逝,技术有缩小规模的习惯。 对于固态驱动器 (SSD),这种情况已经发生到令人难以置信的程度。 现在,您可以获得与最快的 USB 闪存驱动器相同大小的它们。
https://clongeek.com/las-unidades-usb-3-0-mas-rapidas/
你能把文件发给我或重新上传吗? 结果显示无法下载