提问人:GendOS 提问时间:8/14/2020 最后编辑:BarmarGendOS 更新时间:8/17/2020 访问量:270
壳。无法将控制台输出重定向到文件
Shell. Can't redirect console output to file
问:
我正在编写一个 shell 脚本,该脚本应将应用程序输出从控制台重定向到文件。 如果我写以下内容——
./ledToolz 2>&1 | grep 'Found' > panelVersion.txt
在控制台中,一切都很好。 如果我从脚本执行此操作,则不会发生任何事情
答:
0赞
1218985
8/14/2020
#1
如果要在控制台和文件中同时显示 stderr 和输出,请使用以下命令:
./ledToolz 2>&1 | grep 'Found' | tee panelVersion.txt
@GendOS, 如果您尝试在远程计算机上运行脚本,可以按如下方式执行此操作:
USER="Your username"
PASSWD="Your password"
HOST="Your remote hostname"
SCRIPT_PATH="Path to your script"
sshpass -p $PASSWD ssh -l $USER $HOST 'bash -s' < $SCRIPT_PATH
另一种选择是先将文件复制到远程计算机,执行它并在完成后删除远程计算机上的脚本。它看起来像这样:
USER="Your username"
PASSWD="Your password"
HOST="Your remote hostname"
SCRIPT_PATH="Path to your script"
sshpass -p $PASSWD scp $SCRIPT_PATH $USER@$HOST:/tmp/script.sh
sshpass -p $PASSWD ssh $USER@$HOST /tmp/script.sh arg1 ar2 arg3
sshpass -p $PASSWD ssh $USER@$HOST rm /tmp/script.sh
评论
0赞
GendOS
8/17/2020
我的意思是,如果我直接从控制台启动命令,那就没关系了。但是,如果我从shell脚本启动命令,我有一个空文件。
0赞
1218985
8/17/2020
@GendOS 如果 ledToolz 和调用 ledToolz 的脚本都不在当前工作目录中,请尝试在脚本中指定“ledToolz”的绝对路径。
0赞
GendOS
8/17/2020
脚本和可执行文件位于同一目录中。我试图显式指定绝对路径。也不写入文件。可能是我正在从本地机器调用远程机器上的脚本。像这个 sshpass -p 'passsword ssh admin@$1 'sh /home/admin/checkPanel.sh'
0赞
1218985
8/17/2020
@GendOS,您可以在远程机器上运行脚本,如上所示;更新了答案。希望这次能起作用。祝你好运!
评论
ledToolz