`
sealbird
  • 浏览: 584536 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Bash Socket 编程

 
阅读更多
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 ) PDF版

    ### Linux下Socket编程的端口问题 (Bind(): Address already in use) #### 一、问题背景与常见场景 在进行Linux下的网络编程时,经常会遇到端口绑定失败的问题,尤其是在使用`bind()`函数尝试绑定端口时,可能会...

    socket异步编程--libevent的使用

    ### Socket异步编程—libevent的应用 #### 一、引言 在高性能网络应用程序开发过程中,避免因同步I/O操作而导致的程序阻塞至关重要。异步编程作为一种解决方案,允许开发者在提交I/O请求后继续执行其他任务,而实际...

    linux编程手册

    例如,`open()`函数用于打开文件,`fork()`用于创建子进程,`read()`和`write()`用于读写文件,`socket()`和`connect()`用于网络编程。了解这些函数的使用是进行Linux系统编程的基础。 二、Linux C标准头文件.chm ...

    sockettest

    1. **Socket编程基础**: Socket是网络编程的基础,它提供了进程间的网络通信能力。在Java中,Socket是基于TCP/IP协议进行通信的一种方式,它可以创建两个端点之间的连接,使得数据能在网络中可靠传输。 2. **HTTP...

    node.js实现后台连接socket套接字获取数据

    在IT行业中,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。Socket.IO是一个实时应用框架,它为实时、双向通信提供了强大的工具,特别适用于构建实时交互的Web...

    Linux网络编程pdf

    开发者会学习如何使用socket API进行客户端和服务端的编程,理解TCP/IP协议族的工作原理,包括TCP和UDP连接的建立与关闭,以及错误处理和网络性能优化。 4. **高级Bash脚本编程指南**: Bash是Linux的默认shell,...

    protobuf 在socket中的例子

    在Socket编程中,protobuf可以作为消息格式,帮助我们构建可扩展、高效的网络通信系统。以下将详细介绍protobuf在Socket通信中的应用,以及如何在指定的目录“ym_vcpp-txsl\ym_vcpp-txsl\PublicNetSoft”下使用...

    Linux 下C 编程电子教案

    四、Socket编程 Socket是实现网络通信的一种接口,它可以用来建立客户端和服务器之间的连接。主要知识点包括: 1. 创建Socket:根据网络协议(如TCP或UDP)创建Socket,并设置相应的属性。 2. 地址解析:使用`get...

    nodeJS+socket.io做一个简单的聊天室

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。其非阻塞I/O模型和事件驱动特性使得它在构建高并发、实时应用时表现优秀,而Socket.IO则是一个为实时应用提供...

    Node.js-socket.io实现简单的双向通信聊天功能

    在IT行业中,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。而Socket.IO是Node.js的一个库,它提供了一种简单且强大的方式来实现实时、双向的通信,这在构建...

    notejs socket通信

    总结,Node.js结合Socket.IO为我们提供了构建实时通信应用的强大工具,它简化了网络编程的复杂性,使得开发者可以更专注于业务逻辑,而非底层通信细节。希望这个基础教程对理解Node.js Socket.IO通信有所帮助。

    C\C++语言网络开发详解

    一旦理解了 Socket 编程的基本原理,编写 Socket 程序就如同读写磁盘文件一样简单。虽然本文档中的内容主要针对 C 语言、UNIX 和 TCP/IP,但 Socket API 的一般格式已经移植到了 Java 和 Perl 等其他语言中。此外,...

    LINUX编程白皮书

    6. **网络编程**:Linux下的socket编程,理解TCP/IP协议栈,掌握创建服务器和客户端、数据传输、错误处理等。 7. **设备驱动编程**:在嵌入式系统中,与硬件交互的设备驱动编程是重要一环。针对ARM 6410,需要理解...

    经典Linux环境高级编程.rar

    理解网络协议、socket编程模型以及错误处理机制,对于开发网络应用至关重要。 4. **进程间通信(IPC)**:包括管道、信号量、共享内存、消息队列等多种方式。理解并掌握这些通信机制,能帮助开发者解决进程间的协作...

    Unix-Linux编程实践教程(中文清晰带书签).pdf

    8. **网络编程**:Unix/Linux提供了丰富的网络编程接口,如socket API,可以用来创建TCP/IP或UDP服务,实现客户端-服务器通信。 9. **多线程与并发编程**:线程是并发执行的单元,学习pthread库,理解线程同步...

    java网络编程培训文档

    - **Socket类介绍**:Socket是Java网络编程的基础组件,它抽象了复杂的网络通信细节,使得开发者可以通过简单的API调用来实现网络通信。 - **Socket的功能**:主要包括连接远程机器、发送和接收数据、关闭连接以及...

    轻松学用Linux编程

    2. Socket编程:编写客户端和服务器程序,使用`socket`、`bind`、`listen`、`accept`、`connect`、`send`、`recv`等函数进行网络通信。 3. 安全编程:学习SSL/TLS协议,实现加密通信,以及预防常见的网络安全问题。...

    Linux环境编程从应用到内核文字版

    5. **网络编程**:Linux环境下的网络编程涉及套接字API,包括TCP/IP协议栈的理解,socket创建、连接、监听、接受和发送数据等操作。 6. **内存管理**:理解Linux中的虚拟内存机制,包括动态内存分配(malloc/free)...

    unix编程环境.pdf

    Unix下的网络编程通常涉及到socket编程,通过socket API,程序员可以创建服务器端和客户端程序,实现数据的发送和接收。此外,Unix还提供了多种网络服务,如FTP、HTTP、SMTP等,方便用户进行文件传输、网页浏览、...

Global site tag (gtag.js) - Google Analytics