首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据本地主机或IP切换行为

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

Stack Overflow用户
提问于 2012-01-28 00:55:46
回答 2查看 145关注 0票数 1

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

我在想像这样的东西

代码语言:javascript
复制
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值或类似的标识呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-28 01:07:50

主机名通常可以作为环境变量使用:

代码语言:javascript
复制
# Windows: COMPUTERNAME, Linux: HOST or HOSTNAME
host <- Sys.getenv(c("COMPUTERNAME", "HOST", "HOSTNAME"))
host <- unname(host[nchar(host)>0][1])

...But也许在启动R时添加自定义环境变量会更干净:

代码语言:javascript
复制
R -f myscript.R myserver=A

然后从脚本中获取环境变量:

代码语言:javascript
复制
server <- Sys.getenv("myserver")
msg <- switch (server, A="Sent by server A", B="Sent by server B", "Default message")
票数 4
EN

Stack Overflow用户

发布于 2012-01-28 23:25:01

Tommy的回答得到了肯定,但我想记录它带给我的解决方案,只是略有不同。

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

代码语言:javascript
复制
host <- Sys.info()["nodename"]

应该注意的是,Sys.info()“并不是在所有平台上都实现的”,因此这并不是完全可移植的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9037067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档