Bash Socket 编程
你可以在bash中开启一个socket链接,并且传输数据。Bash有两个特殊的设备文件:
• /dev/tcp/host/port - 如果hostname,和port是合法的话,bash会尝试开启一个TCP连接。
• /dev/udp/host/port - 如果hostname和port是合法的话,bash会开启一个UDP连接。
你可以利用这个技术来测试一台主机的端口是否是开启的,而不需要使用nmap或者port扫描器:
view sourceprint?
1 # find out if TCP port 25 open or not
2 (echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 open" || echo "TCP port 25 close"
你可以 使用循环来查找开着的端口:
view sourceprint?1 echo "Scanning TCP ports..."
2 for p in {1..1023}
3 do
4 (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"
5 done
输出:
Scanning TCP ports...
22 open
53 open
80 open
139 open
445 open
631 open
下面的这个例子让你的脚本扮演HTTP客户端:
view sourceprint?
01 #!/bin/bash
02 exec 3<> /dev/tcp/${1:-www.cyberciti.biz}/80
03
04 printf "GET / HTTP/1.0\r\n" >&3
05 printf "Accept: text/html, text/plain\r\n" >&3
06 printf "Accept-Language: en\r\n" >&3
07 printf "User-Agent: nixCraft_BashScript v.%s\r\n" "${BASH_VERSION}" >&3
08 printf "\r\n" >&3
09
10 while read LINE <&3
11 do
12 # do something on $LINE
13 # or send $LINE to grep or awk for grabbing data
14 # or simply display back data with echo command
15 echo $LINE
16 done
关于GUITools和Cronjob
如果你使用cronjob来调用你的脚本的话,你要通过“ export DISPLAY=[user's machine]:0 ”命令来设置本地的 display/input 服务。例如调用 /home/vivek/scripts/monitor.stock.sh脚本,它使用了 zenity 工具:
view sourceprint?
1 @hourly DISPLAY=:0.0 /home/vivek/scripts/monitor.stock.sh
所有的命令你都可以通过“man”来查询详细的使用方式。
分享到:
相关推荐
### Linux下Socket编程的端口问题 (Bind(): Address already in use) #### 一、问题背景与常见场景 在进行Linux下的网络编程时,经常会遇到端口绑定失败的问题,尤其是在使用`bind()`函数尝试绑定端口时,可能会...
### Socket异步编程—libevent的应用 #### 一、引言 在高性能网络应用程序开发过程中,避免因同步I/O操作而导致的程序阻塞至关重要。异步编程作为一种解决方案,允许开发者在提交I/O请求后继续执行其他任务,而实际...
例如,`open()`函数用于打开文件,`fork()`用于创建子进程,`read()`和`write()`用于读写文件,`socket()`和`connect()`用于网络编程。了解这些函数的使用是进行Linux系统编程的基础。 二、Linux C标准头文件.chm ...
1. **Socket编程基础**: Socket是网络编程的基础,它提供了进程间的网络通信能力。在Java中,Socket是基于TCP/IP协议进行通信的一种方式,它可以创建两个端点之间的连接,使得数据能在网络中可靠传输。 2. **HTTP...
在IT行业中,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。Socket.IO是一个实时应用框架,它为实时、双向通信提供了强大的工具,特别适用于构建实时交互的Web...
开发者会学习如何使用socket API进行客户端和服务端的编程,理解TCP/IP协议族的工作原理,包括TCP和UDP连接的建立与关闭,以及错误处理和网络性能优化。 4. **高级Bash脚本编程指南**: Bash是Linux的默认shell,...
在Socket编程中,protobuf可以作为消息格式,帮助我们构建可扩展、高效的网络通信系统。以下将详细介绍protobuf在Socket通信中的应用,以及如何在指定的目录“ym_vcpp-txsl\ym_vcpp-txsl\PublicNetSoft”下使用...
四、Socket编程 Socket是实现网络通信的一种接口,它可以用来建立客户端和服务器之间的连接。主要知识点包括: 1. 创建Socket:根据网络协议(如TCP或UDP)创建Socket,并设置相应的属性。 2. 地址解析:使用`get...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。其非阻塞I/O模型和事件驱动特性使得它在构建高并发、实时应用时表现优秀,而Socket.IO则是一个为实时应用提供...
在IT行业中,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。而Socket.IO是Node.js的一个库,它提供了一种简单且强大的方式来实现实时、双向的通信,这在构建...
总结,Node.js结合Socket.IO为我们提供了构建实时通信应用的强大工具,它简化了网络编程的复杂性,使得开发者可以更专注于业务逻辑,而非底层通信细节。希望这个基础教程对理解Node.js Socket.IO通信有所帮助。
一旦理解了 Socket 编程的基本原理,编写 Socket 程序就如同读写磁盘文件一样简单。虽然本文档中的内容主要针对 C 语言、UNIX 和 TCP/IP,但 Socket API 的一般格式已经移植到了 Java 和 Perl 等其他语言中。此外,...
6. **网络编程**:Linux下的socket编程,理解TCP/IP协议栈,掌握创建服务器和客户端、数据传输、错误处理等。 7. **设备驱动编程**:在嵌入式系统中,与硬件交互的设备驱动编程是重要一环。针对ARM 6410,需要理解...
理解网络协议、socket编程模型以及错误处理机制,对于开发网络应用至关重要。 4. **进程间通信(IPC)**:包括管道、信号量、共享内存、消息队列等多种方式。理解并掌握这些通信机制,能帮助开发者解决进程间的协作...
8. **网络编程**:Unix/Linux提供了丰富的网络编程接口,如socket API,可以用来创建TCP/IP或UDP服务,实现客户端-服务器通信。 9. **多线程与并发编程**:线程是并发执行的单元,学习pthread库,理解线程同步...
- **Socket类介绍**:Socket是Java网络编程的基础组件,它抽象了复杂的网络通信细节,使得开发者可以通过简单的API调用来实现网络通信。 - **Socket的功能**:主要包括连接远程机器、发送和接收数据、关闭连接以及...
2. Socket编程:编写客户端和服务器程序,使用`socket`、`bind`、`listen`、`accept`、`connect`、`send`、`recv`等函数进行网络通信。 3. 安全编程:学习SSL/TLS协议,实现加密通信,以及预防常见的网络安全问题。...
5. **网络编程**:Linux环境下的网络编程涉及套接字API,包括TCP/IP协议栈的理解,socket创建、连接、监听、接受和发送数据等操作。 6. **内存管理**:理解Linux中的虚拟内存机制,包括动态内存分配(malloc/free)...
Unix下的网络编程通常涉及到socket编程,通过socket API,程序员可以创建服务器端和客户端程序,实现数据的发送和接收。此外,Unix还提供了多种网络服务,如FTP、HTTP、SMTP等,方便用户进行文件传输、网页浏览、...