Netstat - Listado servicios activos

Listaremos los servicios activos en nuestra Raspberry Pi, utilizando el comando netstat, mediante node red y volcando el resutado en una tabla relizada con tabulator en el dashboard de node red.

[{"id":"8fa1a92d.816528","type":"tab","label":"Netstat","disabled":false,"info":""},{"id":"24bfd33d.862adc","type":"inject","z":"8fa1a92d.816528","name":"Listar servicios","topic":"Listar servicios","payload":"netstat 4 -nt | sed '1,2d'","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":220,"wires":[["ccda9d3.9156a6"]]},{"id":"5f4085fe.84df7c","type":"exec","z":"8fa1a92d.816528","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":550,"y":220,"wires":[["3423b92a.678386"],[],[]]},{"id":"3423b92a.678386","type":"split","z":"8fa1a92d.816528","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":710,"y":220,"wires":[["9cea05be.8a7ab8","39f8a082.5bb4b"]]},{"id":"54052a43.5b1034","type":"ui_table","z":"8fa1a92d.816528","group":"23271dec.eaf132","name":"","order":1,"width":14,"height":7,"columns":[],"outputs":0,"cts":false,"x":1330,"y":280,"wires":[]},{"id":"1a3a536e.087f9d","type":"join","z":"8fa1a92d.816528","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1010,"y":120,"wires":[["8a093604.e9d498","b1663b86.dcfcf8"]]},{"id":"920acfb8.d9184","type":"csv","z":"8fa1a92d.816528","name":"","sep":",","hdrin":false,"hdrout":"","multi":"one","ret":"\\n","temp":"","skip":"1","strings":false,"x":870,"y":120,"wires":[["1a3a536e.087f9d","41a25536.9b262c"]]},{"id":"8a093604.e9d498","type":"change","z":"8fa1a92d.816528","name":"ui_control","rules":[{"t":"set","p":"ui_control","pt":"msg","to":"tabla","tot":"flow"},{"t":"set","p":"payload","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1160,"y":120,"wires":[["54052a43.5b1034","24f90a97.ba9486"]]},{"id":"fb17ce8a.878e5","type":"debug","z":"8fa1a92d.816528","name":"line number","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":690,"y":40,"wires":[]},{"id":"b1663b86.dcfcf8","type":"debug","z":"8fa1a92d.816528","name":"join","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1070,"y":40,"wires":[]},{"id":"411d4946.caaab8","type":"inject","z":"8fa1a92d.816528","name":"Servicios conectados","topic":"Servicios conectados","payload":"netstat -an | grep \"ESTABLISHED\"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":180,"y":340,"wires":[["ccda9d3.9156a6"]]},{"id":"904195be.33c818","type":"ui_button","z":"8fa1a92d.816528","name":"","group":"275c8609.33e39a","order":2,"width":0,"height":0,"passthru":false,"label":"Listar servicios","tooltip":"","color":"","bgcolor":"","icon":"","payload":"netstat 4 -nt | sed '1,2d'","payloadType":"str","topic":"Listar servicios","x":140,"y":160,"wires":[["ccda9d3.9156a6"]]},{"id":"9ab644a8.df9478","type":"ui_button","z":"8fa1a92d.816528","name":"","group":"275c8609.33e39a","order":3,"width":0,"height":0,"passthru":false,"label":"Servicios conectados","tooltip":"","color":"","bgcolor":"","icon":"","payload":"netstat -an | grep \"ESTABLISHED\"","payloadType":"str","topic":"Servicios conectados","x":160,"y":280,"wires":[["ccda9d3.9156a6"]]},{"id":"ccda9d3.9156a6","type":"function","z":"8fa1a92d.816528","name":"","func":"var tab = {\n    \"customHeight\": 20,\n    \"tabulator\": {\n        \"layout\": \"fitColumns\",\n        \"tooltips\": \"function(cell){     return  cell.getColumn().getField()+ \\\" - \\\" +cell.getValue();}\",\n        \"rowFormatter\": \"function(row){     var data = row.getData();     switch (data.col7) {  case \\\"ip\\\":    row.getElement().style.backgroundColor = \\\"#9e2e66\\\";  break;}}\",\n        \"columnResized\": \"function(column){     var newColumn = {         field: column._column.field,         visible: column._column.visible,         width: column._column.width,         widthFixed: column._column.widthFixed,         widthStyled: column._column.widthStyled     }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }\",\n        \"columns\": [\n            {\n                \"field\": \"col1\",\n                \"title\": \"Protocolo\"\n            },\n            {\n                \"field\": \"col4\",\n                \"title\": \"Dirección Local\"\n            },\n            {\n                \"field\": \"col5\",\n                \"title\": \"Dirección Remota\"\n            },\n            {\n                \"field\": \"col6\",\n                \"title\": \"Estado\"\n            },\n            {\n                \"field\": \"col7\",\n                \"title\": \"Local\",\n                \"formatter\": \"function(cell){ var sex = cell.getValue(); if(sex === \\\"ip_pi\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#132CFC\\\";} else if(sex === \\\"localhost\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#902066\\\";} return sex;}\",\n                \"visible\":false\n            },\n            {\n                \"field\": \"col8\",\n                \"title\": \"L\",\n                \"formatter\": \"function(cell){ var sex = cell.getValue(); if(sex === \\\"tcp\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#132CFC\\\";} else if(sex === \\\"tcp6\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#902066\\\";} return sex;}\",\n                \"visible\":false\n            }\n        ]\n    }\n}\nflow.set('tabla',tab);\nmsg.payload = msg.payload;\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":220,"wires":[["5f4085fe.84df7c","34fd239d.7de8ac","5de5123f.f3724c"]]},{"id":"34fd239d.7de8ac","type":"function","z":"8fa1a92d.816528","name":"Borrar Tabla","func":"msg.payload={\n    command:\"clearData\",\n    arguments: [],\n    returnPromise: true\n}\nreturn msg;","outputs":1,"noerr":0,"x":590,"y":300,"wires":[["54052a43.5b1034","5582519e.fb17f"]]},{"id":"5e99a6d5.946798","type":"inject","z":"8fa1a92d.816528","name":"Servicios abiertos","topic":"Servicios abiertos","payload":"netstat -an | grep \"LISTEN\"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":460,"wires":[["ccda9d3.9156a6"]]},{"id":"7d6da365.e24e4c","type":"ui_button","z":"8fa1a92d.816528","name":"","group":"275c8609.33e39a","order":4,"width":0,"height":0,"passthru":false,"label":"Servicios abiertos","tooltip":"","color":"","bgcolor":"","icon":"","payload":"netstat -an | grep \"LISTEN\"","payloadType":"str","topic":"Servicios abiertos","x":150,"y":400,"wires":[["ccda9d3.9156a6"]]},{"id":"535debbe.775534","type":"change","z":"8fa1a92d.816528","name":"Prepend line number","rules":[{"t":"set","p":"payload","pt":"msg","to":"(parts.index) & \"- \" & payload","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":120,"wires":[["fb17ce8a.878e5","920acfb8.d9184"]]},{"id":"e77d0fdb.7fad8","type":"debug","z":"8fa1a92d.816528","name":"switch","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1250,"y":400,"wires":[]},{"id":"25f7aa6.3097156","type":"function","z":"8fa1a92d.816528","name":"preparar datos","func":"msg.payload = msg.payload.replace(/ +/g,\",\");\nvar words = msg.payload.split(\",\");\nvar tip = words[0];\nif(msg.topic == \"Listar servicios\" || msg.topic == \"Servicios conectados\" ){\n    words = words[3].split(\":\");\n    if(words[0]==flow.get('mi_ip')){\n        msg.payload = msg.payload + \",\" + \"ip_pi\";\n    }\n    else{\n        msg.payload = msg.payload + \",\" + \"localhost\";\n    }\n}\nelse{msg.payload = msg.payload + \",\" + tip;}\nmsg.parts.count = msg.parts.count - 1;\nreturn msg;","outputs":1,"noerr":0,"x":1060,"y":220,"wires":[["e77d0fdb.7fad8","535debbe.775534"]]},{"id":"9cea05be.8a7ab8","type":"switch","z":"8fa1a92d.816528","name":"","property":"payload","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":220,"wires":[["25f7aa6.3097156"]]},{"id":"39f8a082.5bb4b","type":"debug","z":"8fa1a92d.816528","name":"split","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":870,"y":400,"wires":[]},{"id":"41a25536.9b262c","type":"debug","z":"8fa1a92d.816528","name":"csv","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1050,"y":400,"wires":[]},{"id":"a72de4d3.5a0358","type":"inject","z":"8fa1a92d.816528","name":"Puertos en escucha","topic":"Puertos en escucha","payload":"netstat -lpn | grep 'tcp\\|tcp6'","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":580,"wires":[["a511a6e3.70bd88"]]},{"id":"5c67a429.fae85c","type":"ui_button","z":"8fa1a92d.816528","name":"","group":"275c8609.33e39a","order":4,"width":0,"height":0,"passthru":false,"label":"Puertos en escucha","tooltip":"","color":"","bgcolor":"","icon":"","payload":"netstat -lpn | grep 'tcp\\|tcp6'","payloadType":"str","topic":"Puertos en escucha","x":160,"y":520,"wires":[["a511a6e3.70bd88"]]},{"id":"a511a6e3.70bd88","type":"function","z":"8fa1a92d.816528","name":"","func":"var tab = {\n    \"customHeight\": 20,\n    \"tabulator\": {\n        \"layout\": \"fitColumns\",\n        \"tooltips\": \"function(cell){     return  cell.getColumn().getField()+ \\\" - \\\" +cell.getValue();}\",\n        \"columnResized\": \"function(column){     var newColumn = {         field: column._column.field,         visible: column._column.visible,         width: column._column.width,         widthFixed: column._column.widthFixed,         widthStyled: column._column.widthStyled     }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }\",\n        \"columns\": [\n            {\n                \"field\": \"col1\",\n                \"title\": \"Protocolo\"\n            },\n            {\n                \"field\": \"col4\",\n                \"title\": \"Dirección Local\"\n            },\n            {\n                \"field\": \"col5\",\n                \"title\": \"Dirección Remota\"\n            },\n            {\n                \"field\": \"col6\",\n                \"title\": \"Estado\"\n            },\n            {\n                \"field\": \"9\",\n                \"title\": \"A\",\n                \"formatter\": \"function(cell){ var prot = cell.getValue(); if(prot === \\\"tcp\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#132CFC\\\";} else if(prot === \\\"tcp6\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#902066\\\";} return prot;}\",\n                \"visible\":false\n            }\n        ]\n    }\n}\nflow.set('tabla',tab);\nmsg.payload = msg.payload;\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":540,"wires":[["5f4085fe.84df7c","34fd239d.7de8ac"]]},{"id":"ac9bbf22.216e6","type":"inject","z":"8fa1a92d.816528","name":"App al exterior","topic":"","payload":"netstat -no 10 | grep 'tcp\\|tcp6'","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":700,"wires":[["97191013.ad62f"]]},{"id":"3220de61.77a8a2","type":"ui_button","z":"8fa1a92d.816528","name":"App conect al exterior","group":"275c8609.33e39a","order":4,"width":0,"height":0,"passthru":false,"label":"App conect al exterior","tooltip":"","color":"","bgcolor":"","icon":"","payload":"netstat -no 10 | grep 'tcp\\|tcp6'","payloadType":"str","topic":"App conect al exterior","x":160,"y":640,"wires":[["97191013.ad62f"]]},{"id":"97191013.ad62f","type":"function","z":"8fa1a92d.816528","name":"","func":"var tab = {\n    \"customHeight\": 20,\n    \"tabulator\": {\n        \"layout\": \"fitColumns\",\n        \"tooltips\": \"function(cell){     return  cell.getColumn().getField()+ \\\" - \\\" +cell.getValue();}\",\n        \"rowFormatter\": \"function(row){     var data = row.getData();     switch (data.col7) {      case \\\"ip\\\":    row.getElement().style.backgroundColor = \\\"#9e2e66\\\";  break;}}\",\n        \"columnResized\": \"function(column){     var newColumn = {         field: column._column.field,         visible: column._column.visible,         width: column._column.width,         widthFixed: column._column.widthFixed,         widthStyled: column._column.widthStyled     }; this.send({topic:this.config.topic,ui_control:{callback:'columnResized',columnWidths:newColumn}}); }\",\n        \"columns\": [\n            {\n                \"field\": \"col1\",\n                \"title\": \"Protocolo\"\n            },\n            {\n                \"field\": \"col4\",\n                \"title\": \"Dirección Local\"\n            },\n            {\n                \"field\": \"col5\",\n                \"title\": \"Dirección Remota\"\n            },\n            {\n                \"field\": \"col6\",\n                \"title\": \"Estado\"\n            },\n            {\n                \"field\": \"col7\",\n                \"title\": \"Timer\"\n            },\n            {\n                \"field\": \"col9\",\n                \"title\": \"Tipo\",\n                \"formatter\": \"function(cell){ var prot = cell.getValue(); if(prot === \\\"tcp\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#132CFC\\\";} else if(prot === \\\"tcp6\\\"){var row=cell.getRow();row.getElement().style.backgroundColor=\\\"#902066\\\";} return prot;}\",\n                \"visible\":false\n            }\n        ]\n    }\n}\nflow.set('tabla',tab);\nmsg.payload = msg.payload;\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":660,"wires":[["5f4085fe.84df7c","34fd239d.7de8ac"]]},{"id":"5de5123f.f3724c","type":"ip","z":"8fa1a92d.816528","name":"ip","https":false,"timeout":"5000","internalIPv4":true,"internalIPv6":true,"publicIPv4":true,"publicIPv6":false,"x":590,"y":440,"wires":[["82e7d210.556e5"]]},{"id":"82e7d210.556e5","type":"function","z":"8fa1a92d.816528","name":"ip_raspi","func":"flow.set('mi_ip',msg.payload.internalIPv4);\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":440,"wires":[[]]},{"id":"5582519e.fb17f","type":"ui_template","z":"8fa1a92d.816528","group":"23271dec.eaf132","name":"","order":9,"width":0,"height":0,"format":"<script>\n(function($scope) {\n$scope.oldGroupName = 'Enlaces' // initial group placeholder name\n\n$scope.$watch('msg', function() {\n    if ($scope.msg){\n        $(\"p.nr-dashboard-cardtitle\").each(function(){\n            if($(this).text().trim() == $scope.oldGroupName.trim()){\n                p = $(this);\n                p.text($scope.msg.topic);\n                 $scope.oldGroupName = $scope.msg.topic\n            }\n        })\n    }\n });\n})(scope);\n</script>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":700,"y":360,"wires":[[]]},{"id":"24f90a97.ba9486","type":"debug","z":"8fa1a92d.816528","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"ui_control","targetType":"msg","x":1320,"y":40,"wires":[]},{"id":"c11c65c1.3a5a78","type":"comment","z":"8fa1a92d.816528","name":"Los nodos debug son solo necesarios en el desarrollo del flujo.","info":"","x":1010,"y":580,"wires":[]},{"id":"23271dec.eaf132","type":"ui_group","z":"","name":"Enlaces","tab":"e944c01.390164","order":1,"disp":true,"width":"14","collapse":false},{"id":"275c8609.33e39a","type":"ui_group","z":"","name":"Comandos","tab":"e944c01.390164","order":2,"disp":true,"width":4,"collapse":false},{"id":"e944c01.390164","type":"ui_tab","z":"","name":"Netstat","icon":"dashboard","order":13,"disabled":false,"hidden":false}]

Flow Info

Created 4 years, 5 months ago
Rating: not yet rated

Owner

Actions

Rate:

Node Types

Core
  • change (x2)
  • comment (x1)
  • csv (x1)
  • debug (x6)
  • exec (x1)
  • function (x6)
  • inject (x5)
  • join (x1)
  • split (x1)
  • switch (x1)
Other
  • ip (x1)
  • tab (x1)
  • ui_button (x5)
  • ui_group (x2)
  • ui_tab (x1)
  • ui_table (x1)
  • ui_template (x1)

Tags

  • netstat
  • tabulator
  • exec
  • table
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option