if else in ssh pseudo-tty 分配给远程服务器怎么办

how to do if else in ssh pseudo-tty allocation to remote server

我尝试使用以下 bash 脚本 sshpseudo-tty allocation 到远程服务器;

ssh -t -t user@remote-host
if [ -d "/test/dir_test" ]; then
  sudo chown -R user:admin /test/dir_test/
  sudo rm -rf /test/dir_test/*
else        
  sudo mkdir /test/dir_test/
fi

检查 /test/dir_test 是否存在于 remote-host 上,如果不存在则在远程主机上创建这样的目录 test/dir_test;但是脚本不起作用,我想知道在这种情况下如何使用 sshpseudo-tty allocation 来做到这一点。

您必须像这样引用要发送到服务器的命令:

ssh -t -t user@remote-host "
if [ -d '/test/dir_test' ]; then
  sudo chown -R user:admin /test/dir_test/
  sudo rm -rf /test/dir_test/*
else        
  sudo mkdir /test/dir_test/
fi"

请注意 sudo 需要密码,除非在其配置中另有说明。

您可以使用 heredoc 通过标准输入发送命令:

ssh -tt user@remote-host <<EOT
if [ -d "/test/dir_test" ]; then
  sudo chown -R user:admin /test/dir_test/
  sudo rm -rf /test/dir_test/*
else        
  sudo mkdir /test/dir_test/
fi
exit
EOT

注意最后的退出命令。