Проблема, с которой вы сталкиваетесь, заключается в том, что каждый вызов shell
выполняется в своем собственном процессе.Таким образом, команда ssh, которая открывается в первом процессе, - это не то, что получает команды, которые выдаются в последующих вызовах оболочки.
Предполагая, что основной оболочкой является bash, вы можете продемонстрировать это, используя:
# echo PID of shell
system('echo $$') # 20859
system('echo $$') # 20860
Если вы намереваетесь использовать R в качестве точки входа в вызов ssh, вы можете передать команды для выполненияудаленно как часть вашего звонка в ssh.Он использует ssh для подключения и запуска команды всего за один вызов.
Например, получить использование диска с удаленного хоста
command <- 'ssh -i "rstudio.pem" ec2-user@[address number here].us-east-2.compute.amazonaws.com df -H'
system(command)
Я ожидаю, что ваша команда будет выглядеть следующим образом:
command <- 'ssh -i "rstudio.pem" ec2-user@[address number here].us-east-2.compute.amazonaws.com sudo yum -y update'
system(command)
Если вы хотите выполнить серию команд, вы можете попробовать перечислить их в качестве входных данных.Это, в свою очередь, передаст их в ssh через стандартный ввод.Это немного странное поведение, но может быть достаточно для ваших целей.
inputs <- c('echo "Starting Command"', 'df -h', 'echo "All done."')
command <- 'ssh -i "rstudio.pem" ec2-user@your.aws.ec2.address'
system(command, input=inputs)