从闪亮的应用程序调用系统命令

时间:2017-09-28 08:21:29

标签: r bash shiny system

我正试图从我闪亮的应用程序中调用系统命令:

system("ssh -t soporte@xx.yy.zz.xx /home/soporte/Automatismos/refrescar_csv.sh user password", wait = TRUE)

我想要做的是通过SSH在另一台机器上运行bash脚本。好吧,我测试了作为闪亮用户记录的R控制台的系统调用(因为我读这些系统调用是作为闪亮的用户运行),它完美地工作。但是当我尝试从闪亮的应用程序不起作用。我还检查了用户权限等。

脚本代码是:

#!/bin/bash
#Activamos el proxy de polen
echo "Levantando el proxy a Internet...."
sudo /root/bin/proxy2blaster.sh up $1 $2
export http_proxy=http://127.0.0.1:3128
export https_proxy=https://127.0.0.1:3128
rm -f /srv/shinyapps/proyectosR/Web/csv_report_manager3.csv
#Actualizamos el CSV atando la API de UDO
echo "Descargando CSV..."
curl -u  user:password --insecure -X GET "https://www.udo-tt.com/api/tt/reports/csv/ticketsbyservice?date_start=$(date +"%Y-%m-%d" -d "-1 year")T00:00:00.000Z&date_end=$(date +"%Y-%m-%d" -d "-1 day")T23:59:00.999Z&service=CS_GLOBNOC" > /srv/shinyapps/proyectosR/Web/csv_report_manager3.csv

#Resfrescamos el servidor shiny
echo "Refrescando servidor shiny..."
sudo kill -9 $(ps ax | grep proyectosR | fgrep -v grep | awk '{ print $1 }')

#Desactivamos proxy de Polen
echo "Cerrando proxy...."
sudo /root/bin/proxy2blaster.sh down $1 $2

我在此脚本中执行的操作是打开代理,然后下载CSV文件,刷新闪亮的服务器,然后关闭连接。当它失败时,我得到一个空的CSV文件。

我在两种情况下捕获了退出代码,通过控制台我得到0代码,这意味着脚本被正确执行,并通过闪亮的应用程序得到1,这是不正确的。

请注意,闪亮的服务器计算机是一个docker容器(Ubuntu),我需要运行该脚本的计算机是主机(CentOS)。

我试图搜索有关此主题的文档,但我在互联网上找不到太多信息。

有可能以某种方式调试闪亮的应用程序,以找到失败的东西吗?

任何帮助将不胜感激。提前谢谢

2 个答案:

答案 0 :(得分:0)

这似乎是一个权限问题。它已经解决了。谢谢!

答案 1 :(得分:0)

这应该可以解决问题

system(paste0("echo -e 'yourpassword\n' | sudo -S mkdir testdir"))

sudo -s选项运行SHELL环境变量指定的shell(如果已设置或指定shell)。