我正试图从我闪亮的应用程序中调用系统命令:
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)。
我试图搜索有关此主题的文档,但我在互联网上找不到太多信息。
有可能以某种方式调试闪亮的应用程序,以找到失败的东西吗?
任何帮助将不胜感激。提前谢谢
答案 0 :(得分:0)
这似乎是一个权限问题。它已经解决了。谢谢!
答案 1 :(得分:0)
这应该可以解决问题
system(paste0("echo -e 'yourpassword\n' | sudo -S mkdir testdir"))
sudo -s选项运行SHELL环境变量指定的shell(如果已设置或指定shell)。