Golang检测Linux服务器端口占用

  • 代码实现
func CheckPort(port int) error {
    checkStatement := fmt.Sprintf(`netstat -anp | grep -q %d ; echo $?`, port)
    output, err := exec.Command("sh", "-c", checkStatement).CombinedOutput()
    if err != nil {
        return err
    }
    // log.Println(output, string(output)) ==> [48 10] 0 或 [49 10] 1
    result, err := strconv.Atoi(strings.TrimSuffix(string(output), "\n"))
    if err != nil {
        return err
    }
    if result == 0 {
        return fmt.Errorf("端口%d已被占用", port)
    }

    return nil
}
  • 纠错思路

    • 第8行原代码为:result, err := strconv.Atoi(string(output)),
      报错为: strconv.Atoi: parsing "0\n": invalid syntax
    • 经排查,CombinedOutput()函数的执行结果0\n(1\n)包含换行符\n,
      利用strings.TrimSuffix()函数删除换行符\n
  • 延伸知识
    • strings.TrimSuffix()strings.TrimRight()的区别:

      • TrimRight(s string, cutset string) string指从s右端开始,删除所有cutset中出现的字符,若从右到左的过程中遇到其他字符,则停止删除。
      • TrimSuffix(s, suffix string) string删除后缀suffix
      • eg:strings.TrimRight("abcdabcdaaaaeac", "abcd")返回"abcdabcdaaaae"
        strings.TrimRight("abcdaaaaa", "abcd")返回""

原文地址:https://www.cnblogs.com/GaiHeiluKamei/p/11453623.html

时间: 2024-08-01 03:40:10

Golang检测Linux服务器端口占用的相关文章

检测Linux服务器端口是否开通

现如今云服务器已经是大势所趋,国内比较著名的云服务器厂商有阿里.腾讯,国外有aws,尽管有的公司目前为止还是使用的物理机,但是无论你是使用的云服务器还是物理机,在运行服务时都必不可少的需要监听到指定的端口,而且已经有很多的服务需要监听的端口需要可以通过公网访问,如果想要保证服务正常必须确定端口可以正常访问,例如nginx服务呦,默认的80端口如果在安全组没有开通的话,是一定不能访问的呦. 接下来,我们就来学习下都有那些命令可以用来确定服务器的端口是否已经成功开通吧. 一.nc命令 nc命令也经常

linux查看端口占用情况

Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 # lsof -i:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME lwfs 22065 root 6u IPv4 4395053 0t0 TCP *:irdmi (LISTEN) 可以看到8000端口已经被轻量级文件系统转发服务lwfs占用 2.netstat -tunlp |grep 端口号,用

Linux 查看端口占用情况

转自:http://www.cnblogs.com/fabulousyoung/p/4071150.html 例子,查看80端口的占用情况: lsof -i:80 或者: netstat -apn | grep 80 上面的命令执行之后可以显示进程号,找到进程号以后,再使用以下命令查看详细信息: ps -aux | grep <进程号> 附: windows下查看端口占用命令: netstat -ano | findstr 80 windows下查看进程列表命令: tasklist

【mark】linux查看端口占用

原文:http://yuangeqingtian.blog.51cto.com/6994701/1188023 Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号<?xml:namespace prefix="o">?xml:namespace> ubuntu:查看进程占用端口号:netstat -anp|grep pid Linux下查看端口号所使

linux查看端口占用

今天发现服务器上Tomcat 8080端口起不来,老提示端口已经被占用. 使用命令: ps -aux | grep tomcat 发现并没有8080端口的Tomcat进程. 使用命令:netstat –apn 查看所有的进程和端口使用情况.发现下面的进程列表,其中最后一栏是PID/Program name 发现8080端口被PID为9658的Java进程占用. 进一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看 就可以明确知道8080端口

Linux 查看端口占用并杀掉

1. 查看端口号占用情况: [plain] view plaincopy netstat -apn|grep 80 tcp        0      0 10.65.42.27:80              172.22.142.20:62771         ESTABLISHED6426/lighttpd 2. 确定进程号 为上面标红显示 找到进程号以后,再使用以下命令查看详细信息: [plain] view plaincopy ps -aux|grep <进程号> eg: ps -

[Mongodb] 借mongodb被入侵勒索事件,谈下Linux服务器端口安全问题

一.缘由: 最近几天Mongodb勒索事件甚嚣尘上:由于对外网开放访问并且没有开启授权机制被删库.远程拖库.勒索.接着又曝出Elasticsearch被勒索事件,缘由一样,Elasticsearch服务暴露在公网上并且 Elasticsearch是没有账号安全体系的.再者联想到前些日子,Redis未授权访问漏洞,同样是因为Redis没有暴露在公网.没有设置授权认证,而引起的. 做为专职运维人员来说,这些漏洞和勒索事件,只要有一件发生就必须引起警觉和漏洞扫描防治措施的启动. 入侵了数据库,会把数据

找出linux服务器IO占用高的程序

一台服务器比较性能无外乎内存.cpu使用率.IO使用率,把这3样优化好了,你服务器的负载就要小很多,当然网络情况不在我的考虑范围,毕竟网络这个情况是很不稳定,就算你服务器上把网络优化得再好,idc不给力也没用,除非是自己公司机房,好了,今天只说下怎么找IO占用高的程序. 系统:centos 5.5 1.开启IO监控 sysctl vm.block_dump=1或echo 1 >/proc/sys/vm/block_dump 2.开启后内核会将IO读写dump到日记,用dmesg查看: dmesg

linux查看端口占用程序

netstat -apn  查看所有进程和端口的使用情况,看到9000端口和28080端口被java程序占用,PID分别为17607,1442 ps -aux|grep 17607 ps -aux|grep 1442 可以看到占用9000端口和28080端口的程序.