R 如何根据本地主机或IP切换行为

R 如何根据本地主机或IP切换行为,r,portability,R,Portability,我正在开发需要在两台服务器上冗余运行的R代码。代码的某些方面(如文件路径或错误消息页脚)需要特定于每台服务器。我宁愿根据当前运行代码的机器的主机名或ip进行切换,而不是根据每个文件的特定服务器版本进行切换。我该怎么办 我在想象这样的事情 if(localIP == 123.45.678.9){ msg = "Sent by server A" } else if (localIP == 123.55.555.5) { msg = "Sent by server B" } else {

我正在开发需要在两台服务器上冗余运行的R代码。代码的某些方面(如文件路径或错误消息页脚)需要特定于每台服务器。我宁愿根据当前运行代码的机器的主机名或ip进行切换,而不是根据每个文件的特定服务器版本进行切换。我该怎么办

我在想象这样的事情

if(localIP == 123.45.678.9){
  msg = "Sent by server A"
} else if (localIP == 123.55.555.5) {
  msg = "Sent by server B"
} else {
  msg = "Default message"
}

那么,如何获得localIP值或类似的标识?

主机名通常作为环境变量提供:

# Windows: COMPUTERNAME, Linux: HOST or HOSTNAME
host <- Sys.getenv(c("COMPUTERNAME", "HOST", "HOSTNAME"))
host <- unname(host[nchar(host)>0][1])
然后从脚本中获取该env变量:

server <- Sys.getenv("myserver")
msg <- switch (server, A="Sent by server A", B="Sent by server B", "Default message")

server主机名通常作为环境变量提供:

# Windows: COMPUTERNAME, Linux: HOST or HOSTNAME
host <- Sys.getenv(c("COMPUTERNAME", "HOST", "HOSTNAME"))
host <- unname(host[nchar(host)>0][1])
然后从脚本中获取该env变量:

server <- Sys.getenv("myserver")
msg <- switch (server, A="Sent by server A", B="Sent by server B", "Default message")

server汤米的答案得到了认可,但我想记录下它给我带来的解决方案,它只是略有不同

Sys.info()返回有关平台的许多变量。nodename属性返回“网络上已知机器的名称(如果有)。”


host汤米的答案得到了认可,但我想记录下它给我带来的解决方案,只是有点不同

Sys.info()返回有关平台的许多变量。nodename属性返回“网络上已知机器的名称(如果有)。”


主持人谢谢!Sys.getenv实际上并不适用于我(这些值都没有设置),但这为Sys打开了窗口。我不知道的函数族。此外,您的环境变量解决方案确实非常干净。我应该开始思考这些问题。@SamSwift-您可以尝试
names(Sys.getenv())
来查看定义了哪些环境变量。谢谢!Sys.getenv实际上并不适用于我(这些值都没有设置),但这为Sys打开了窗口。我不知道的函数族。此外,您的环境变量解决方案确实非常干净。我应该开始考虑这些问题。@SamSwift-您可以尝试
names(Sys.getenv())
查看定义了哪些环境变量。这也适用于(linux主机上):system(“hostname”,intern=T)这也适用于(linux主机上):system(“hostname”,intern=T)