Cache da informação:
-
Adicione um trabalho cron que seja executado a cada 5 ou 10 minutos:
curl http://icanhazip.com > ~/.cache/my-ip
Algumas fontes fornecem essas informações através de protocolos sem conexão e, portanto, não serão tão rigorosas com seus limites quanto as fontes HTTP baseadas em conexão:
dig +short myip.opendns.com @208.67.222.222 > ~/.cache/my-ip
-
No tmux, altere o comando para simplesmente ler o seu arquivo de cache:
cat ~/.cache/my-ip
Isso também pode ser feito por um único script, mas seria muito menos simples:
#!/usr/bin/env perl
use LWP::Simple;
sub read_cached_ip {
my ($file) = @_;
return undef if !-e $file; # check if file exists
my $mtime = (stat $file)[9];
return undef if time - $mtime >= 5*60; # check if file has expired
if (open(my $fh, "<", $file)) {
chomp(my $ip = <$fh>);
close($ip);
return $ip;
}
return undef;
}
sub update_ip {
my ($file) = @_;
my $ip = LWP::Simple::get("http://icanhazip.com");
if (open(my $fh, ">", $file)) {
print $fh "$ip\n";
close($ip);
}
return $ip;
}
my $file = $ENV{HOME}."/.cache/my-ip";
my $ip = read_cached_ip($file) // update_ip($file);
print "$ip\n";