The pingr package has tools to check if a remote computer or web server is up and some other related tools.
Install the package from CRAN:
install.packages("pingr")If you need the development version, install it from GitHub:
pak::pak("r-lib/pingr")The ping() function does ICMP ping, via the system’s
ping utility:
library(pingr)#> 
#> Attaching package: 'pingr'#> The following object is masked from 'package:utils':
#> 
#>     nslping("127.0.0.1")#> [1] 0.087 0.301 0.206By default it sends three packets and measures the time it receives and answer. It waits between sending out the packets, so if you want a really quick check, you can just send a single packet:
ping("127.0.0.1", count = 1)#> [1] 0.182If a machine is down (or it does not exist), then NA is
returned instead of the roundtrip time:
ping("192.0.2.1", count = 1)#> [1] NAWith TCP ping we can check if a machine is listeing on a TCP port, e.g. if google’s search web server is up and running:
ping_port("www.google.com", port = 80, count = 1)#> [1] 19.228my_ip() queries the public IP of the computer, either
via DNS or HTTPS:
my_ip()#> [1] "83.50.96.133"is_online() checks if the computer is online. It makes
three tries:
my_ip().my_ip().apple_captive_test().If any of these are successful, it returns TRUE.
is_online()#> [1] TRUEThe package also contains a function to perform DNS queries. This is
a more portable and more functional version of the
utils::nsl() function:
nsl("www.r-project.org", type = 1L)#> $answer
#>                 name class type  ttl               data
#> 1  www.r-project.org     1    5 6525 cran.wu-wien.ac.at
#> 2 cran.wu-wien.ac.at     1    1  300      137.208.57.37
#> 
#> $flags
#>    aa    tc    rd    ra    ad    cd 
#> FALSE FALSE  TRUE  TRUE FALSE FALSEnsl("google.com", type = 28L)#> $answer
#>         name class type ttl                     data
#> 1 google.com     1   28 210 2a00:1450:4003:80f::200e
#> 
#> $flags
#>    aa    tc    rd    ra    ad    cd 
#> FALSE FALSE  TRUE  TRUE FALSE FALSEMIT © RStudio