【发布时间】:2013-07-09 18:13:03
【问题描述】:
我想编写一个脚本,我可以用它来 grep 远程服务器上的进程, 在每台服务器上已经有一个用户帐户可以在没有密码的情况下进行 ssh, 所以这个想法是这个脚本会
- sudo 到无密码用户帐户
- ssh 到远程服务器
- 运行命令(ps -ef | grep 进程名)
- 在本地服务器上显示输出
- 关闭 ssh 连接
- 退出无密码用户帐户
在我有的那一刻:
if [ $1 = -r ]
then
su - useraccount
ssh $2 "ps -ef | grep process | grep -v grep"
exit
else
ps -ef | grep process | grep -v grep
fi
这里的想法是如果你没有 -r 选项,你可以在本地运行脚本 所以要在本地运行,您将拥有
script.sh processname
或远程
script.sh -r remotehost processname
我有 grep -v grep 因为它只是让我在列表中看到我自己的 grep 命令很烦,
我只是觉得它看起来有点干净
有什么想法吗?
【问题讨论】:
-
那么问题出在哪里?
-
su启动自己的shell,使用su - username -c "your ssh command"。 -
谢谢,是的,我可以让脚本 ssh 到远程服务器上,但现在问题是将本地变量传递给远程服务器,所以如果我运行
script.sh -r remotehost processname本地进程名是 $3但不是远程
标签: shell scripting ssh remote-access