perl实现nacos服务注册

#!/bin/perl
use strict;
use LWP;
use warnings;
use Socket;
use JSON;

my $auto_ip = 1;
my $service_ip = "127.0.0.1";
my $service_port = "8848";
my $ip = "127.0.0.1";
my $port = "9999";
my $service_name = "name";
my $group_name = "DEFAULT_GROUP";
my $user = "nacos";
my $pass = "nacos";

sub get_ip_address($$) {
    my($addr, $port) = @_; 
    my $dest = sockaddr_in($port, inet_aton($addr));
    socket(SOCK,AF_INET, SOCK_DGRAM, 0);
    connect(SOCK,$dest);
    my $mysockaddr      = getsockname SOCK;
    my($myport, $myaddr)      = sockaddr_in($mysockaddr);
    my $mystraddr      = inet_ntoa($myaddr);
    return $mystraddr;
};

if($auto_ip == 1){
    $ip = get_ip_address($service_ip, $service_port);
};

my $beat_data = {"ip" => $ip, "port" => $port, "serviceName" => $service_name, "ephemera" => "true"};
my $post_data = ["ip" => $ip, "port" => $port, "serviceName" => $service_name, "groupName" => $group_name, "username" => $user, "password" => $pass, "ephemera" => "true", "beat" => JSON->new->utf8->encode($beat_data)];
my $browser = LWP::UserAgent->new();
my $response= $browser->post("http://$service_ip:$service_port/nacos/v1/ns/instance", $post_data);
my $result = $response->content;

while(1){
   if($auto_ip == 1){
      $ip = get_ip_address($service_ip, $service_port);
      $beat_data = {"ip" => $ip, "port" => $port, "serviceName" => $service_name, "ephemera" => "true"};
      $post_data = ["ip" => $ip, "port" => $port, "serviceName" => $service_name, "groupName" => $group_name, "username" => $user, "password" => $pass, "ephemera" => "true", "beat" => JSON->new->utf8->encode($beat_data)];
   };
   my $browser = LWP::UserAgent->new();
   my $response= $browser->put("http://$service_ip:$service_port/nacos/v1/ns/instance/beat", $post_data);
   my $result = $response->content;
   sleep(2);
};

posted on 2022-05-06 15:48  sw-lab  阅读(5)  评论(0)    收藏  举报  来源

导航