ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat

We believe that writing is about content, about what you want to say – not about fancy formatting.
我们坚信写作写的是内容,所思所想,而不是花样格式。
— Ulysses for Mac

注:一些内置命令 只能用 help x 以查看x命令的帮助

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第1张图片
查看x命令.png

if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第2张图片
if - shell.png

Linux内置变量的访问方式:

( 可能命令行没效果,但是写脚本时有用 )

$?

命令的返回值存储变量 即返回刚刚执行命令的结果 0-成功 1-失败

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第3张图片
$?.png

$#

获取命令 的参数个数

rm -r b ( b 是文件夹名 ) —— $# = 2 ( 2个参数为 -r 和 b )

用法举例:
if [ $# -lt 1 ] —— 如果参数个数小于1
if [ $# -gt 1 ] —— 如果参数个数大于1

$n

获取第几个参数

$0 —— 获取命令本身
$1 —— 获取第一个参数 如 rm -r bin --> $1=-r

用法举例:
if [ " $1 " = " --conf " ]

$@

得到所有参数

rm -r b —— $@ --> -r b

shift

向左移动参数 左边的参数被覆盖
( 脚本里面 我们每次 $1 但是每次shift 这样可以循环处理所有参数 )

if [ -e xxx ] —— 如果xxx参数存在

判断是不是目录:
if [ -d ] —— 错误写法 需要空格
if [ -d xxx ] —— 正确写法


命令组合

a && b

a成功后再执行b

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第4张图片
a && b.png

a || b

a执行失败再执行b

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第5张图片
a || b.png
ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第6张图片
a || b.png

a ; b

a执行完后执行b 没有成功、失败的约束条件

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第7张图片
a ; b.png

( a ; b )

组合命令 只在当前目录执行 不切换目录

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第8张图片
( a ; b ).png

NetCat 瑞士军刀

TCP/IP

传输控制协议 网路协议

Java 中 Socket 编程

ServerSocket 服务器端 要有listener 监听器 创建监听器时要给出端口port
Socket 客户端要向端口发起连接

netcat 模拟tcp udp 网络通信

可实现端口的扫描

语法

服务端 nc -l port ( 指定监听的端口号 )
客户端 nc ip port ( 指定服务器的ip和监听端口号 )
ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第9张图片
nc

man nc

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第10张图片
man nc

命令行中 nc -l 8888 直接回车 --> 前台运行
我们要了解进程后台作业 和 停止和终止的区别!

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第11张图片
停止和终止.png
  • 停止是放到后台运行 jobs可以查看到
  • 终止是完全杀死 jobs查看不到了

命令行中 nc -l 8888 & ( 在本机启动ServerSocket 进程 )回车
则不在前台运行 :

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第12张图片
nc -l 8888 &.png

客户端 nc ip port ( 指定服务器的ip和监听端口号 )
启动客户端 连接到服务器端口8888 ( 本机ip 为localhost )

在命令行 输入 nc localhost 8888 : ( 下一行等待输入 )

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第13张图片
输入 nc localhost 8888.png

输入完hello 回车:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第14张图片
输入完hello 回车.png

此时服务器端已经有效果了 只不过是服务器端作业在后端运行
( 此时前台作业是客户端 )

再 ctrl + z 把客户端也放到后端

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第15张图片
ctrl + z.png

此时 1 是服务器端 ; 2 是客户端

再 fg %1 把服务器端调到前台:
( 按两下回车 显示出 从客户端传来的hello )

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第16张图片
fg %1 把服务器端调到前台.png

终止所有:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第17张图片
image.png

netcat 字符聊天

按ctrl + alt + F6 进入一个新终端:
开启服务器端:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第18张图片
新终端开启服务器端.png

按ctrl + alt + F5 进入一个新终端:
开启客户端:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第19张图片
开启客户端

在客户端 输入:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第20张图片
客户端 输入.png

ctrl + alt + F6 切换到 服务器端:
( 已经可以看到从客户端传来的东西 )

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第21张图片
切换到 服务器端.png

( 也可以从服务端传给客户端东西...... )

字符聊天时 ctrl + d 断开连接
( 断开一方 另一个自动断开 )

在windows中ping 虚拟机中的ubuntu 的局域网的ip地址可以ping通:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第22张图片
1.PNG

在虚拟机中也可以ping通windows主机:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第23张图片
2

在虚拟机中开启服务器 在主机上开启客户端 , 两个可以通信:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第24张图片
3

netcat 传输文件

服务端 nc -l 1234 > readme.txt 重定向接收数据到文件
客户端 nc localhost 1234 < readme.txt 重定向输入

服务端:

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第25张图片
服务端1.png
ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第26张图片
客户端1.png
ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第27张图片
服务端2.png

文件成功从客户端传给服务端


netcat 端口扫描

nc ip -z port1 - portn ( 指定需要扫描的主机ip和端口区间 )
-v 详细信息 ; -w 连接超时 ; -z 端口扫描

比如 nc -v -w 2 ip -z 2000-4000 ( 2 标识2秒 ip可以换成主机名称 )

ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第28张图片
端口扫描.png

failed 标识 端口没有启用...


命令前后台执行切换

1 启动命令时放到前台 nc -l 8888
2 启动命令时直接放到后台 nc -l 8888 &
3 将当前进程暂放入后台 变成作业( job )
  • ctrl + z 将当前进程暂放入后台
  • jobs 查看后台运行的所有作业
4 将后台job激活 在后台运行 $ > bg %n
  • n 是作业的标识号
5 将后台作业切换到前台运行 $ > fg %n
ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat_第29张图片
1

世界上所有的追求都是因为热爱
一枚爱编码 爱生活 爱分享的IT信徒
—— hongXkeX

你可能感兴趣的:(ubuntu 4 - 常用命令 $? $# $n $@ shift a&&b a||b a;b NetCat)