Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
bash-从本地计算机运行远程脚本_Bash_Shell - Fatal编程技术网

bash-从本地计算机运行远程脚本

bash-从本地计算机运行远程脚本,bash,shell,Bash,Shell,我试过这个: #!bin/bash ssh user@host.com 'sudo /etc/init.d/script restart' 但我得到了这个错误: sudo: no tty present and no askpass program specified 我如何运行该脚本?现在,当我需要运行该脚本时,我会执行以下步骤: ssh user@host.com sudo /etc/init.d/script restart 但我不想一直手动登录到远程服务器,然后输入restart

我试过这个:

#!bin/bash
ssh user@host.com  'sudo /etc/init.d/script restart'
但我得到了这个错误:

sudo: no tty present and no askpass program specified
我如何运行该脚本?现在,当我需要运行该脚本时,我会执行以下步骤:

ssh user@host.com
sudo /etc/init.d/script restart
但我不想一直手动登录到远程服务器,然后输入restart命令


我是否可以编写可以运行的本地脚本,这样我只需要输入密码,它就可以运行远程脚本并重新启动进程?

您可以使用
ssh
命令中的
-t
选项使用
ssh
命令附加一个伪tty

ssh -t -t user@host.com 'sudo /etc/init.d/script restart'
根据
manssh

-t强制伪tty分配。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个-t选项强制tty分配,即使ssh没有本地tty。


谢谢这就是我要找的。今天我注意到一件奇怪的事。当我从本地机器执行该命令时,我看到一条正常消息,远程服务器重新启动,一切正常,但实际上该服务器由于某种原因停机。如果我从远程服务器正常重启,它会正常重启。为什么会发生这种情况?哦,在使用远程重启命令之后,当我直接从服务器使用该命令时,它会给出这样一条消息:
无法杀死2190:没有这样的进程
。因此,出于某种原因,它会终止进程而不是重新启动。我想,
kiil
命令将是
/etc/init.d/script
的一部分,请您的系统管理员授予您在无密码的情况下运行
sudo/etc/init.d/script
的权限。如果您是系统管理员,请参阅
manvisudo
mansudoers