ss 过滤或者指定过滤

常用选项示例

[root@CentOS7.3 ~]#ss -an               #列出所有的sockets连接。   
[root@CentOS7.3 ~]#ss -tnl              #列出和tcp相关的sockets连接。
[root@CentOS7.3 ~]#ss -unl              #列出和udp相关的sockets连接。

匹配过滤本机ip地址和端口

[root@centos7.3 ~]#ss src :22               #匹配本机端口为22的连接
Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
tcp   ESTAB      0      0      192.168.xxx.xxx:ssh                   192.168.166.1:63892                
tcp   ESTAB      0      52     192.168.xxx.xxx:ssh                   192.168.166.1:63076  
[root@centos7.3 ~]#ss src :ssh              #匹配所有ssh协议的连接
Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
tcp   ESTAB      0      0      192.168.166.137:ssh                   192.168.166.1:63892                
tcp   ESTAB      0      52     192.168.166.137:ssh                   192.168.166.1:63076                
[root@centos7.4-1 ~]#ss src 192.168.1.2:ssh     #匹配单个IP地址的ssh协议连接
Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
tcp   ESTAB      0      0      192.168.166.137:ssh                   192.168.166.1:63892                
tcp   ESTAB      0      52     192.168.166.137:ssh                   192.168.166.1:63076                

匹配过滤远程ip地址和端口

[root@centos7.4-1 ~]#ss dst 119.75.213.61           #匹配单个远程IP的所有连接
Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
tcp   ESTAB      0      0        192.168.0.25:59484                 119.75.213.61:http                 
[root@centos7.4-1 ~]#ss dst 119.75.213.61:80        #只匹配单个IP地址的80端口
Netid State      Recv-Q Send-Q  Local Address:Port                   Peer Address:Port                
tcp   ESTAB      0      0        192.168.0.25:59484                 119.75.213.61:http                 

将本地或者远程端口和一个数比较

[root@centos7.3 ~]# ss  sport = :http 
[root@centos7.3 ~]# ss  dport = :http 
[root@centos7.3 ~]# ss  dport \> :1024 
[root@centos7.3 ~]# ss  sport \> :1024 
[root@centos7.3 ~]# ss sport \< :32000 
[root@centos7.3 ~]# ss  sport eq :22 
[root@centos7.3 ~]# ss  dport != :22 

使用state 过滤sockets信息

显示所有状态为established的http连接

[root@CentOS7.3 ~]#ss -o state established '( dport = :smtp or sport = :http )' 
Netid Recv-Q Send-Q       Local Address:Port                        Peer Address:Port 

显示处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 192.168.1/24所有 tcp套接字

ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 192.168.1/24

使用tcp连接的状态进行过滤

ss -4 state FILTER-NAME-HERE
ss -6 state FILTER-NAME-HERE

FILTER-NAME-HERE 可用状态:

established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
closing
all             #所有以上状态。
connected       #除了listen and closed的所有状态。
synchronized    #所有已连接的状态除了syn-sent。
bucket          #显示状态为maintained as minisockets,如:time-wait和syn-recv。
big             #和bucket相反。
[root@CentOS7.3 ~]#ss -4 state closed
Netid Recv-Q Send-Q       Local Address:Port                        Peer Address:Port                
udp   0      0                        *:mdns                                   *:*                    
udp   0      0                        *:25506                                  *:*                    
udp   0      0            192.168.xxx.1:domain                                 *:*                    
udp   0      0                 *%virbr0:bootps                                 *:*                    
udp   0      0                        *:bootpc                                 *:*                    
udp   0      0                        *:53379                                  *:*  

 

### 关于 ptrade 系统中的过滤股票功能 在 ptrade 系统中,可以通过 `get_stock_status` 函数实现对股票的状态判断并完成过滤操作。此函数能够帮助用户识别特定条件下的股票状态,例如是否为 ST 股票、是否停牌或退市等[^4]。 以下是具体实现方式: #### 1. **初始化环境** 通过设置全局变量存储目标证券列表,并将其作为筛选的基础对象。 ```python def initialize(context): g.security = ['600397.SS', '600701.SS', '000001.SZ'] set_universe(g.security) ``` #### 2. **定义处理逻辑** 在 `handle_data` 方法中执行具体的股票状态检测与过滤操作。以下代码展示了如何排除掉被标记为 ST 的股票: ```python def handle_data(context, data): stocks_list = g.security filter_stocks = [] # 判断股票是否为ST股 st_status = get_stock_status(stocks_list, 'ST') # 遍历原始股票列表,保留非ST股 for stock in stocks_list: if st_status.get(stock) is not True: filter_stocks.append(stock) log.info('筛选后的非ST股票列表: %s' % filter_stocks) ``` 在此过程中,`get_stock_status` 接受两个主要参数: - 第一个是待检测的股票列表; - 第二个是指定要查询的状态类型(如 `'ST'`, `'HALT'`, 或 `'DELISTING'`),分别代表 ST 股票、停牌股票以及退市股票。 如果需要进一步扩展过滤规则,则可以在循环内部加入更多条件语句来满足需求。 #### 3. **其他可用选项** 除了剔除 ST 类型外,还可以利用相同接口获取额外的信息用于更复杂的筛选流程。例如: - 停牌信息 (`'HALT'`) 可以用来避免买入无法正常交易的标的物; - 退市标志 (`'DELISTING'`) 提供了一种预防机制防止意外购入即将退出市场的资产。 这些附加特性使得开发者可以根据实际应用场景灵活调整选股标准。 --- ### 示例完整脚本 下面给出一个综合运用以上技术要点的例子程序片段: ```python from ptrade import * def initialize(context): context.stocks = ['600570.SH', '000001.SZ'] def handle_data(context, data): filtered_stocks = [] status_dict = get_stock_status(context.stocks, ['ST', 'HALT']) for s in context.stocks: if (status_dict[s]['ST'] != True and status_dict[s]['HALT'] != True): filtered_stocks.append(s) log.info(f"最终符合条件的股票池:{filtered_stocks}") ``` 这里不仅考虑到了单维度约束还实现了多方面联合判定从而提高了模型鲁棒性和实用性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值