Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Shell脚本到远程计算机中的Sudo并执行命令_Linux_Sudo - Fatal编程技术网

Linux Shell脚本到远程计算机中的Sudo并执行命令

Linux Shell脚本到远程计算机中的Sudo并执行命令,linux,sudo,Linux,Sudo,以上是我需要完成的任务列表 在没有密码提示的情况下登录到远程计算机 运行Sudo以访问根目录 将shell更改为ksh 执行脚本设置。\u env.ksh 使用ls-ltr列出文件 当我从执行此脚本时,假设localunixmachine.com 它问我密码 一旦我输入密码,它将转移到远程机器,但不会执行剩余的命令 若我退出远程会话,它将执行剩余的命令。 您能告诉我完成我在这里尝试的最佳方法是什么吗。首先,您可以复制您的ssh公钥,您可以将ssh keygen生成的授权密钥复制到远程服务器根/s

以上是我需要完成的任务列表

在没有密码提示的情况下登录到远程计算机 运行Sudo以访问根目录 将shell更改为ksh 执行脚本设置。\u env.ksh 使用ls-ltr列出文件 当我从执行此脚本时,假设localunixmachine.com

它问我密码 一旦我输入密码,它将转移到远程机器,但不会执行剩余的命令 若我退出远程会话,它将执行剩余的命令。
您能告诉我完成我在这里尝试的最佳方法是什么吗。

首先,您可以复制您的ssh公钥,您可以将ssh keygen生成的授权密钥复制到远程服务器根/ssh/authorized\u密钥 然后脚本将被删除

#!/bin/csh
ssh -o StrictHostKeyChecking=no xyz123@remotemachine.com
sudo -su rootuser
ksh
. /mydir/setup_env.ksh
ls -ltr

我认为这应该适用于远程执行多个命令:

ssh root@remotemachine.com "/bin/ksh mydir/setup_env.ksh"
至于不使用密码登录服务器,则需要使用密钥设置ssh身份验证

#!/bin/bash
ssh -o StrictHostKeyChecking=no xyz123@remotemachine.com <<EOF
sudo -su rootuser
ksh
. /mydir/setup_env.ksh
ls -ltr
EOF