2017-01-07 143 views
1

我只有一个包含IP地址和端口号的文件。我知道如何通过名称启动服务,但是如何通过端口号来启动和停止它?如何通过端口号远程启动和停止服务?

for port in $(cat /home/asd/iplog.txt); do 
    service /etc/init.d/$port | cut -d\: -f2 start 
done 

这里是iplog.txt输出:

192.168.1.2:21 
192.168.2.25:80 
192.168.5.230:25 

和脚本的输出:

/etc/init.d/192.168.1.2:21: unrecognized service 
cut: start: no such file or directory 
/etc/init.d/192.168.2.25:80: unrecognized service 
cut: start: no such file or directory 

现在我有两个问题:

  • 如何通过端口号启动和停止服务?
  • 如何远程做到这一点?

由于我不熟悉shell脚本,我真的需要你的帮助。

+0

我认为,这种方法是天生的缺陷:任何合理的系统功能,服务应该是已知的,有时服务应该启动或以某种顺序停了下来,等利用一些编排的解决方案,例如, ,Salt,来管理你的服务。 –

回答

0

如何通过端口号找到服务的PID /命令?

你可以杀死它/他们停止服务。但这不是最好的方法。

#lsof-i :22 
Command PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
sshd 14543 root 3u IPv4 4132251  0t0 TCP *:ssh (LISTEN) 
sshd 14543 root 4u IPv6 4132253  0t0 TCP *:ssh (LISTEN) 
#ps 14543 
PID TTY  STAT TIME COMMAND 
14543 ?  Ss  0:00 /usr/sbin/sshd 

如何远程执行此操作?

ssh [email protected] 'your command to stop service' 
+0

“lsof -i:port”只显示服务是否正在运行。它没有启动或停止服务权限? –

+0

@RAZHamraz吧。如果服务正在运行,它将返回PID。有了这个PID,你可以找到命令行。然后按照你的意愿启动或停止它。例如。 ps -p 1453 -o comm =它返回“sshd” – Will

+0

@RAZHamraz正如Roman Susi所说,你最好确定哪些服务在这些端口上侦听,以及检查其状态/启动/停止的正确命令是什么。 – Will