#!/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);
};