(菜鸟自学)初学脚本编程

news2024/11/28 12:30:49

(菜鸟自学)初学脚本编程

  • Bash脚本概述
    • 编写一个测试在线主机的脚本程序
  • Python脚本概述
    • 编写一个与Netcat功能类似的脚本程序
  • C语言脚本概述
    • 编写C语言脚本程序(Hello World)

Bash脚本概述

Bash脚本是一种基于Bash(Bourne Again SHell)解释器的脚本语言,用于自动化和批处理任务。它可以在Linux、Unix和其他类Unix系统上使用。

以下是一些Bash脚本的常见特性和用途:

  1. 自动化任务:Bash脚本可以用于自动化各种任务,如备份文件、定期清理临时文件、批量处理数据等。你可以编写一系列命令和逻辑,将其放入脚本中,并通过运行脚本来执行这些任务。

  2. 系统管理:Bash脚本可以帮助进行系统管理任务,例如安装软件、配置环境变量、监控系统资源等。通过编写脚本,你可以批量执行这些操作,减少手动工作量。

  3. 命令行工具:Bash脚本可以将一系列命令和参数组合在一起,创建自定义的命令行工具。这些工具可以接受用户输入、处理数据,并根据需要输出结果。

  4. 条件和循环:Bash脚本提供了条件语句(如if-else语句)和循环结构(如for循环和while循环),使得能够根据不同条件执行不同的操作,或者对一组数据进行迭代处理。

  5. 函数和模块化:Bash脚本支持定义函数,这样可以将一部分代码逻辑封装起来,提高代码的可读性和复用性。你可以在脚本中定义多个函数,并在需要的地方进行调用。

编写Bash脚本时,请记住以下几点:

  • 使用合适的注释来解释脚本中的每个部分和关键步骤。
  • 处理错误和异常情况,并提供有用的错误信息。
  • 确保脚本具有足够的权限以执行所需的操作。
  • 考虑脚本的可移植性,尽量避免使用特定于某个系统的功能和命令。

学习Bash脚本需要一定的时间和实践,但它是一种强大而灵活的工具,可以极大地提高自动化任务和系统管理的效率。

编写一个测试在线主机的脚本程序

  • ping
    使用ping命令探测某台主机是否在线
    在这里插入图片描述
    由上可知该主机在线,并且回复了icmp协议的ping请求。
    但想要对大量主机进行扫描探测时,这样一个一个的去ping就不太符合实际了,这类重复且繁琐的工作通常就需要使用脚本来提高效率了。
  • 脚本编写
    首先编写一个pingscript.sh的脚本,通过ICMP协议的ping命令对局域网进行扫描,以探测那些能够回复信息的主机地址。
#!/bin/bash
echo "Usage: ./pingscript.sh [network]"
echo "example: ./pingscript.sh 192.168.10"

这段代码是一个简单的Bash脚本,用于在给定网络范围内执行ping命令。下面逐行解释这段代码:
#!/bin/bash指定使用Bash解释器来执行脚本。
echo "Usage: ./pingscript.sh [network]"告诉用户应该使用./pingscript.sh [network]的格式来运行脚本,并且需要提供一个网络作为参数。
echo "example: ./pingscript.sh 192.168.10"这段代码的目的是帮助用户正确使用脚本。用户可以通过执行./pingscript.sh 192.168.10这样的命令来运行脚本,并将指定的网络作为参数传递给脚本。
编写完成后记得保存,再使用chmod命令赋予其执行的权限。

chmod 744 pingscript.sh

在这里插入图片描述

  • 运行脚本
    在当前目录执行脚本程序使用命令./pingscript.sh
    在这里插入图片描述
  • if语句
    在脚本中添加if语句
#!/bin/bash

if  [ "$1" == "" ]
then

echo "Usage: ./pingscript.sh [network]"
echo "example: ./pingscript.sh 192.168.10"

fi

if ["$1"==""]这一行开始一个条件语句,在if语句后有一个then语句,如果用户没有提供参数,则执行if语句中的代码块。$1是用户传递给脚本的第一个参数,通过$1来检查是否为空。
fi这是if语句的结束标记,表示if语句的代码块已经结束。
在这里插入图片描述
这段代码的目的是检查用户是否提供了正确的参数。如果用户没有提供参数,脚本会输出一些提示信息,告诉用户如何正确使用脚本并提供一个示例。如果用户提供了正确的参数,脚本将继续执行其他的代码。
在这里插入图片描述

  • for循环
    fi前添加for循环语句
else
for x in `seq 1 254`; do
ping -c 1 $1.$x
done

else代表如果用户提供了正确的参数,脚本将执行else语句中的代码块。
seq 1 254代表生成一个从1到254的数字序列,然后通过$1.$x组合成IP地址来执行ping命令。这个循环遍历给定网络范围内的所有主机,每个主机ping一次。
在这里插入图片描述
使用脚本ping192.168.10网段
在这里插入图片描述
通过反馈的扫描结果得知,在指定的局域网络中,主机192.168.10.1回复了icmp请求,因此它必然在线,另外未受到回复的则表明主机不在线或IP地址未被占用。

  • 提炼数据
    • 通过grep筛选返回内容

done前添加grep语句

ping -c1 1 $1.$x | grep "64 bytes"

在这里插入图片描述
此处筛选含有“64 bytes”的所有实例,若局域网络内有主机回应ping的扫描请求,就会收到这样的icmp请求。改动脚本后,再次执行脚本返回结果如下:
在这里插入图片描述
这样一来只会看到在线主机的IP地址了,不会再有那些为回复的主机信息了。
使用cut进一步过滤

ping -c1 1 $1.$x | grep "64 bytes" | cut -d" " -f4

这将截取其中的IP地址,把其它数据全部过滤掉。
在这里插入图片描述
不过返回的信息总是跟着一个冒号为了更加的直观,需要使用到sed命令。
使用set删除尾部冒号

ping -c1 1 $1.$x | grep "64 bytes" | cut -d" " -f4 | sed 's/.$//'

在这里插入图片描述
此番处理后,这个脚本也就满足我们的需求了。
在这里插入图片描述

Python脚本概述

Python脚本是用Python编写的脚本文件,用于执行特定任务或自动化操作。Python是一种高级编程语言,具有简单易学、可读性强、通用性强等优点,因此在软件开发、数据处理、机器学习等领域得到广泛应用。

Python脚本可以在终端或命令行中运行,也可以通过调用其他Python模块和库来扩展其功能。Python脚本可以访问计算机上的文件、网络、数据库等资源,并且可以与其他编程语言进行互操作。

Python脚本通常以.py扩展名结尾,它们可以包含变量、函数、条件语句、循环、异常处理等Python编程概念。Python脚本还可以使用第三方库,例如NumPy、Pandas、Matplotlib等,这些库扩展了Python的功能,使其能够更有效地处理数据和图形化显示。
Python脚本在Kali Linux中有广泛的应用,特别是在网络安全领域。Kali Linux是一个专门用于渗透测试和安全评估的操作系统,它内置了许多有用的工具和库,可以方便地编写和执行Python脚本来进行各种安全任务。

以下是几个常见的应用场景:

  1. 自动化渗透测试:Kali Linux中的许多渗透测试工具都提供了Python API,你可以使用Python脚本自动化执行渗透测试任务。例如,你可以编写Python脚本来自动化执行端口扫描、漏洞扫描、密码破解等任务。

  2. 恶意代码分析:Kali Linux中的恶意代码分析工具通常提供Python接口,你可以使用Python脚本来分析和检测恶意代码。例如,你可以编写Python脚本来提取恶意代码中的特征、分析行为或生成报告。

  3. 网络安全工具开发:Kali Linux提供了丰富的网络安全工具,但有时你可能需要自定义工具来满足特定需求。Python是一个灵活且易于使用的编程语言,你可以使用Python脚本来开发自己的网络安全工具或扩展现有工具的功能。

  4. 数据分析和可视化:Python在数据科学领域非常流行,Kali Linux也提供了用于数据分析和可视化的工具和库。你可以使用Python脚本来处理和分析渗透测试结果、网络流量数据等,并使用Matplotlib、Seaborn等库创建交互式图表和可视化报告。

总之,Python脚本在Kali Linux中是一种强大的工具,可以帮助渗透测试人员、安全研究人员和网络管理员更高效地执行各种安全任务。

编写一个与Netcat功能类似的脚本程序

此脚本程序需要能够连接某台主机的特定端口,以判断该端口是否处于开放状态。

  • 首先需要实现参数的输入功能
#!/usr/bin/python
ip = raw_input("Enter the ip: ")
port = input("Enter the port: ")

#!/usr/bin/python这是脚本的开头,指定了使用Python解释器来执行脚本。
ip = raw_input("Enter the ip: ")这一行使用raw_input()函数来获取用户输入的IP地址,并将其存储在变量ip中。
port = input("Enter the port: ")这一行使用input()函数来获取用户输入的端口号,并将其存储在变量port中。
脚本编写完成为脚本赋予可执行的权限,在启动后,程序会提示输入IP地址和端口号
在这里插入图片描述
不过程序还未实现“连接指定主机、指定端口”的端口扫描功能。

  • 添加端口扫描功能
#!/usr/bin/python

import socket

ip = raw_input("Enter the ip: ")
port = input("Enter the port: ")

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
if s.connect_ex((ip,port)):
	print "Port",port,"is colsed"
else:
	print "Port",port,"is open"

import socket这一行导入了Python的socket模块,用于实现网络通信。
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)这一行创建了一个TCP套接字对象s,用于与指定的IP地址和端口建立连接。socket.AF_INET表示使用IPv4地址,socket.SOCK_STREAM表示使用TCP协议。
if···else···这是脚本的主要逻辑部分。s.connect_ex((ip,port))尝试与指定的IP地址和端口建立连接,如果连接不成功,connect_ex()函数会返回一个非零值。根据返回值是否为零来判断端口是否开放,然后打印相应的结果。

你可以运行这个脚本并输入要检查的IP地址和端口号,它会输出相应的结果,告诉你该端口是否开放。
在这里插入图片描述
请注意,为了使用该脚本,你需要在运行环境中拥有适当的网络访问权限,并确保指定的IP地址和端口是可访问的。

C语言脚本概述

C语言是一种通用的、中级的编程语言,常用于系统和应用程序的开发。C语言程序脚本是使用C语言编写的可以直接运行的脚本。
C语言程序脚本相比其他脚本语言(如Python)可能需要编译的步骤,但它也提供了更高的性能和更好的系统级控制。C语言适用于需要更底层控制、更高效率的应用程序开发。

编写C语言脚本程序(Hello World)

创建一个名为“cprogram.c”的文件,文件内容如下:

#include <stdio.h>
int main(int argc,char *argv[])
{
        if(argc < 2)
        {
                printf("%s\n","Pass your name as an argument");
                return 0;
        }
        else
        {
                printf("Hello %s\n",argv[1]);
                return 0;
        }
}

#include <stdio.h>这是一个预处理指令,用于包含标准输入输出库(stdio.h)。它提供了处理输入和输出的函数,例如printf()。
int main(int argc,char *argv[])这是程序主函数main()的定义。它接受两个参数:argc和argv。argc表示命令行参数的数量,argv是一个指向字符串数组的指针,其中包含每个命令行参数的字符串。
if(argc < 2){······}这是一个条件语句,如果argc小于2,则打印一条错误信息,提示用户需要传递一个参数。printf()函数用于在终端上打印输出信息。
else{······}如果argc大于等于2,则打印一条欢迎信息,其中argv[1]是第一个命令行参数的字符串值。
return 0这是main()函数的返回语句,用于指示程序正常结束,并将0作为返回值传递给操作系统。
编写完成后想要执行需要事先编译,编译命令如下:

gcc cprogram.c -o cprogram  

在这里插入图片描述
编译完成会生成一个名为cprogram的可执行文件,直接使用命令./cprogram会提示使用方法,按照使用方式使用命令./cprogram nbdlsplyb能够得到正确的返回结果。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1399199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图片批量建码怎么用?每张图片快速生成二维码

当我们需要给每个人分别下发对应的个人证件类图片信息&#xff0c;比如制作工牌、荣誉展示或者负责人信息展示时&#xff0c;现在都开始使用二维码的方法来展示员工信息。那么如何快速将每个人员的信息图片分别制作成二维码图片呢&#xff0c;最简单的方法就是使用图片批量建码…

vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持

文章目录 一、v-model是什么二、什么是语法糖三、v-model常见的用法1、对于输入框&#xff08;input&#xff09;&#xff1a;2、对于复选框&#xff08;checkbox&#xff09;&#xff1a;3、对于选择框&#xff08;select&#xff09;&#xff1a;4、对于组件&#xff08;comp…

群发邮件效果追踪:掌握数据,优化营销策略

我们在邮件群发结束后&#xff0c;如果想要了解到这次群发活动的效果怎么样&#xff0c;就需要通过一些数据。比如说邮件达到率、打开率、跳出率、退订率等。这些信息可以将收件人的行为数据化&#xff0c;让我们可以更清晰地对活动进行深入分析让我们及时地找出问题和优点&…

C语言数据结构——顺序表

&#xff08;图片由AI生成&#xff09; 0.前言 在程序设计的世界里&#xff0c;数据结构是非常重要的基础概念。本文将专注于C语言中的一种基本数据结构——顺序表。我们将从数据结构的基本概念讲起&#xff0c;逐步深入到顺序表的内部结构、分类&#xff0c;最后通过一个实…

网络安全:守护数字世界的盾牌

在当今数字化的时代&#xff0c;网络已经渗透到我们生活的方方面面。从社交媒体到在线银行&#xff0c;从在线购物到工作文件传输&#xff0c;网络几乎无处不在。然而&#xff0c;随着网络的普及&#xff0c;网络安全问题也日益凸显。那么&#xff0c;如何确保我们的数字资产安…

Vue2的双向数据绑定

Vue2的双向数据绑定 Observer&#xff1a;观察者&#xff0c;这里的主要工作是递归地监听对象上的所有属性&#xff0c;在属性值改变的时候&#xff0c;触发相应的watcher。 Watcher&#xff1a;订阅者&#xff0c;当监听的数据值修改时&#xff0c;执行响应的回调函数&#x…

KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)

文章目录 1、登录kubesphere平台2、redis部署分析3、redis容器启动代码4、kubesphere平台部署redis4.1、创建redis配置集4.2、创建redis工作负载4.3、创建redis服务 5、测试连接redis 在kubesphere平台上部署redis应用都是基于redis镜像进行部署的&#xff0c;所以所有的部署操…

【Github搭建网站】零基础零成本搭建个人Web网站~

Github网站&#xff1a;https://github.com/ 这是我个人搭建的网站&#xff1a;https://xf2001.github.io/xf/ 大家可以搭建完后发评论区看看&#xff01;&#xff01;&#xff01; 搭建教程&#xff1a;https://www.bilibili.com/video/BV1xc41147Vb/?spm_id_from333.999.0.0…

2023.12 电子学会青少年软件编程(Python) 等级考试试卷(三级)

2023年12月 电子学会青少年软件编程&#xff08;Python&#xff09; 等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a; 100 题数&#xff1a; 38 一、单选题(共 25 题&#xff0c; 共 50 分) 1. 一个非零的二进制正整数&#xff0c; 在其末尾添加两个“0” &#xf…

【排序算法】六、快速排序(C/C++)

「前言」文章内容是排序算法之快速排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 快速排序1.1 原理1.2 Hoare版本&#xff08;单趟&#xff09;1.3 快速排序完整代码&…

70.Redis缓存优化实践(基于分类树场景)

文章目录 前言第一次优化第二次优化第三次优化第四次优化第五次优化 前言 分类树查询功能&#xff0c;在各个业务系统中可以说随处可见&#xff0c;特别是在电商系统中。 而在实际工作中&#xff0c;这样一个分类树查询&#xff0c;我们都不断的改进了好几次。这是为什么呢&…

Lite AD的安装

1、Lite AD的安装及配置 Lite AD流程&#xff1a; &#xff08;1&#xff09;创建一个新的Windows 10&#xff0c;安装tools&#xff0c;再安装ITA组件&#xff08;安装Lite AD会自动安装VAG/VLB&#xff09; &#xff08;2&#xff09;创建一个新的Windows 10&#xff0c;安…

【GNN报告】“青源Talk”-图可信学习与图大模型研究进展

北航王啸-图自监督学习 简介 介绍 浙大杨洋-探索大图模型预训练 总括 介绍 参考 Yang Yang - Zhejiang University dgraph-web DGraph: ALarge-Scale Financial Dataset for Graph Anomaly Detection All in One: Multi-task Prompting for Graph Neural Networks&#xf…

Spring Boot实现统一异常处理的技术解析

引言 在软件开发过程中&#xff0c;异常处理是非常重要的一环。一个好的异常处理机制可以帮助我们更好地定位问题&#xff0c;提高代码的可维护性和稳定性。Spring Boot作为一款轻量级的Java开发框架&#xff0c;提供了一种简单而高效的方式来实现统一异常处理。本文将详细介绍…

神器yakit之web fuzzer功能

前言 yakit并不像burp一样单独设置爆破模块&#xff0c;但是yakit也是可以爆破的&#xff0c;并且更好用&#xff08;个人感觉&#xff09;。 手工测试场景中需要渗透人员对报文进行反复的发送畸形或者特定的payload进行查看服务器的反馈并以此来进行下一步的判断。 Fuzz标签便…

动态规划:完全背包问题

本题力扣上没有&#xff0c;是刷的卡码网第52题52. 携带研究材料感兴趣的小伙伴可以去刷一下&#xff0c;是ACM模式。 题目&#xff1a; 题目描述&#xff1a; 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带…

x-cmd pkg | skate - 个人键值对存储工具

目录 简介用户首次快速实验指南功能特点竞品和相关作品进一步探索 简介 skate 是个人键值对存储工具&#xff0c;具备数据加密、云端数据备份以及多设备同步等功能。 它由 Charm 团队开发&#xff0c;借用 Charm Cloud 向用户提供一种快捷的方式来保存和检索各种数据&#xf…

接口测试 02 -- JMeter入门到实战

前言 JM eter毕竟是做压测的工具&#xff0c;自动化这块还是有缺陷。 如果公司做一些简单的接口自动化&#xff0c;可以考虑使用JMeter快速完成&#xff0c;如果想做完善的接口自动化体系&#xff0c;建议还是基于Python来做。 为什么学习接口测试要先从JMeter开始&#xff1f;…

VS Code + Python + Selenium 自动化测试基础-01

VS Code Python Selenium 自动化测试基础-01 让我们来讲一个故事为什么要写自动化开发前的准备工作牛刀小试开常用的web DriverAPI-定位元素id定位&#xff1a;find_element_by_id()name 定位&#xff1a;find_element_by_name()class 定位&#xff1a;find_element_by_class…

Oracle SQL Developer执行sql脚本文件

文件过于大&#xff0c;无法打开&#xff0c;直接在界面执行。 ①将文件放置到D盘&#xff0c;文件名 daochu5.sql ② 在工具执行SQL界面输入 d:\daochu5.sql;,点击运行按钮运行