Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Shell 设置作为autosys作业连接到多台服务器的脚本时遇到的挑战_Shell_Ssh_Server_Login Script_Autosys - Fatal编程技术网

Shell 设置作为autosys作业连接到多台服务器的脚本时遇到的挑战

Shell 设置作为autosys作业连接到多台服务器的脚本时遇到的挑战,shell,ssh,server,login-script,autosys,Shell,Ssh,Server,Login Script,Autosys,脚本的目的是登录到多个服务器并执行df-k命令,并发送包含如下类似列表的电子邮件: 2016年11月3日星期四12:59:49美国东部时间 (a******001s02)上的“/opt(80%)”空间不足 (a*******01s01)上的空间不足“/var(83%)” (a*******001s01)上的“/opt/IBM/ITM(98%)”空间不足 (a*******01s01)上的“/应用程序(80%)”空间不足 空间不足“/opt/willy(80%)”(a**********01s01

脚本的目的是登录到多个服务器并执行df-k命令,并发送包含如下类似列表的电子邮件: 2016年11月3日星期四12:59:49美国东部时间

(a******001s02)上的“/opt(80%)”空间不足

(a*******01s01)上的空间不足“/var(83%)”

(a*******001s01)上的“/opt/IBM/ITM(98%)”空间不足

(a*******01s01)上的“/应用程序(80%)”空间不足

空间不足“/opt/willy(80%)”(a**********01s01)

我的挑战是: 此脚本必须像autosys作业一样作为计划作业运行。挑战在于,我相信(不是100%确定)用户名(ssh$username@$host) 应该是sudo用户,以便将其作为autosys作业运行。但是,如果我将用户名硬编码为sudo用户,ssh命令将无法工作。与中一样,我们不能使用用户名sudo登录到多个服务器。 这里我使用了“logname”,因此logname将采用执行命令的用户的名称。但是,如果必须将logname设置为autosys作业,则它似乎不起作用

基本上,我想让这个脚本作为autosys作业运行。目前它的工作非常好,如果我可以手动运行脚本。我感谢任何帮助。提前感谢:)

整个脚本:

#Shell script to watch disk space
#!/bin/sh

MAILTO="xxxxxxx@xxxxx.com"


# Set alert level 80% is default


ALERT=70

path=/tmp/Joshma

report=$path/report.txt

date > $report

echo >>$report

servers=$path/serversfile.txt

username=`logname`

for host in `cat $servers`   

do 
echo "$host"
ssh $username@$host df -k | grep -vE '^Filesystem|tmpfs|cdrom|proc' | awk '{ print $4 " " $7 }' | while read output;

do
echo " $output" 

usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )

partition=$(echo $output | awk '{ print $2 }' )

if [ $usep -ge $ALERT ] 
then
    echo "Running out of space \"$partition ($usep%)\" on ($host)\n" >>$report 

fi

done

done

cat $report | mail -s "File System Space Check" $MAILTO

Autosys作业中的作业所有者值可以是任何可以登录到正在执行Autosys作业的服务器的用户ID(计算机值)。AutoSys代理将生成一个子进程,该子进程以该用户ID的身份执行命令。如果可以,请使用您正在使用的ID以作业所有者的身份手动运行脚本。如果没有,请确保您使用的ID具有通过ssh连接到服务器并执行命令的适当权限。AutoSys不要求作业所有者值在服务器上具有sudo


如果脚本手动运行,但在使用相同ID和服务器的AutoSys作业中失败,请开始查看在子进程中设置的环境。默认情况下,AutoSys会生成一个通用配置文件,该配置文件可能与使用ID手动登录时设置的配置文件不同。您可能必须在作业中设置profile:值以生成配置文件,以便在子进程启动时正确设置环境。

AutoSys作业中的作业所有者值可以是任何可以登录到配置文件的用户ID正在执行AutoSys作业的服务器(计算机值)。AutoSys代理将生成一个子进程,该子进程以该用户ID的身份执行命令。如果可以,请使用您正在使用的ID以作业所有者的身份手动运行脚本。如果没有,请确保您使用的ID具有通过ssh连接到服务器并执行命令的适当权限。AutoSys不要求作业所有者值在服务器上具有sudo


如果脚本手动运行,但在使用相同ID和服务器的AutoSys作业中失败,请开始查看在子进程中设置的环境。默认情况下,AutoSys生成的通用配置文件可能与使用ID手动登录时设置的配置文件不同。您可能必须在作业中设置profile:值以生成配置文件,以便在启动子进程时正确设置环境。

让我困惑的是,命令中没有任何内容在远程计算机上运行需要sudoer访问。您是否有来自
autosys
的错误消息来帮助我们更好地了解您的问题?让我感到困惑的是,在远程计算机上运行的命令中没有任何内容需要sudoer访问。您是否有来自autosys的错误消息来帮助我们更好地了解您的问题?