标签: shell

在命令上运行 shell 脚本

我想在date -s <string>使用命令时运行 shell 脚本。例如,我想通过在 shell 脚本中执行以下命令将命令记录到文件 /tmp/user.log

logger -p user.notice "date -s command executed" -f /tmp/user.log
Run Code Online (Sandbox Code Playgroud)

在shelldate -s <string>上执行时如何运行shell脚本?

为了使它更通用,当其他人在我的系统上发出特定的 linux 命令时,我想运行我的 shell 脚本。这该怎么做?

scripting linux shell command

6
推荐指数
2
解决办法
602
查看次数

如何通过SSH检查文件权限

首先,我对此很陌生,所以如果这是非常基本的或者我听起来过于不了解,请原谅我。

我想检查我的 VPS 上特定目录中的所有文件,以确保文件为 644,目录为 755。FTP 是不可能的,因为文件/目录太多了。SSH 似乎是最合乎逻辑的选择,但在我转到 chmod 权限之前,我想看看我将要更改的内容。有没有办法查找和显示不符合此条件的文件/目录?

提前感谢您的任何见解。

linux ssh shell

6
推荐指数
2
解决办法
1万
查看次数

如何获取通过管道传输到 tee 的进程的退出代码?

我有这样的 bash 代码(Mac OS X):

foo.sh | tee foo.log echo $?

问题是那$?包含 tee 的退出代码而不是 foo.sh 的退出代码。如何获取 foo.sh 的退出代码?

shell bash mac-osx

6
推荐指数
1
解决办法
3668
查看次数

在 Bash 提示中,为什么 Control+x 和 Backspace 会清除当前行?

我错误地发现了这一点:Control+x其次是Backspace

有谁知道为什么这会清除线路?有什么文件吗?

linux shell bash

5
推荐指数
1
解决办法
612
查看次数

AS400 IBM iSeries 上的“runas”或“sudo”等价物

我正在尝试使用 Java 在 AS400 操作系统中调用一个程序以作为另一个用户运行(通过获取输入用户/密码)。就像runas在 Windows 或sudoUnix 中一样——我们可以在 AS400 操作系统中做什么?

我能够调用像基本的Unix命令findcdls通过对Java AS400等。

我对提供给我的实验性 AS400 沙箱的访问权限非常有限。所以我不确定sudo当以管理员身份运行时,通过 java 的命令是否有效。

我认为在 AS400 控制台上STRQSH或者QSH是自定义构建程序,并且不支持所有 Unix 命令。因此,我对什么是正确的和音乐会的做法一无所知。任何指导将不胜感激——业内人士是如何做到的?AS400 中是否有任何sudo/runas等效项?IBM 有自己的外壳吗?

ibm shell java ibm-midrange

5
推荐指数
0
解决办法
2168
查看次数

术语混淆 SSH、Shell、终端、命令提示符和 Telnet

如果可以的话,我通常不会使用 SSH,但是如果我必须这样做,我当然会这样做,而且我似乎已经这样做了多年,但仍然对这些不同的术语感到有些困惑......来自我的基础研究,这是我的理解,有人可以验证/纠正吗?

  • Telnet ... 在 SSH 之前,不安全
  • SSH ...(安全外壳)系统/协议的通用名称
  • Shell ... SSH 的简称
  • 命令行/命令提示符... windows 版本
  • 终端... Unix 版本,也被苹果使用。

另外两个问题:

  1. Linux 版本一般叫什么,是只叫 SSH 吗?
  2. 什么是bash?

编辑...不是 100% 相信我上面问题的结构...请注意,上面的定义在一定程度上有点偏离,请参阅下面的答案以获得更好的定义

ssh shell command-line-interface terminal telnet

5
推荐指数
2
解决办法
1158
查看次数

如何防止脚本吞下所有标准输入?

我有一个脚本,它从循环中的管道读取并在循环中运行一个期望脚本和一个普通的 shell 脚本。这两个脚本都运行 ssh 到另一台服务器以获取一段数据。例如:

cat /tmp/file |
while read a b c d
do
   s=`expect-script server1 $b`
   c=`ssh $b normal-script`
   echo $s $c
done
Run Code Online (Sandbox Code Playgroud)

即使 /tmp/file 中有很多行,脚本也会在处理第一行后退出。我怀疑预期脚本正在吞噬所有标准输入,因此当它返回时,没有任何东西可以阅读。我怎样才能避免这种情况?我不希望我调用的任何脚本从主脚本的 stdin 中读取。

ssh shell stdin expect

5
推荐指数
1
解决办法
2754
查看次数

您将如何通过脚本向 smb.conf 添加共享?

我想编写将共享添加到smb.conf文件的脚本。我当前的脚本只是将它附加到文件的末尾,但这并不理想。我宁愿有一些东西,如果它不存在就会添加一个新的共享,如果它存在就替换它。

我目前正在 CentOS 7 发行版上编写此脚本,但理想情况下会喜欢跨发行版工作的东西,尽管这不是必需的。

另外,我bash之所以这样做,是因为脚本是在将其他包添加到系统之前运行的。该脚本用于yum安装samba软件包,然后应该对其进行配置并添加共享。

configuration shell bash samba

5
推荐指数
1
解决办法
4164
查看次数

如何测试两个给定的文件是否相同?

刚刚更新了代码......我每次都在“其他”序列上退出。您可以从我的服务器下载 update.sh 文件。它只包含回声“你好更新”

更新代码 (03.11.2015)

    #/bin/bash
    updateoldmd5=`sed -n l  globalupdate.aix`
    updatenewmd5=`md5sum update.sh |cut -d ' ' -f 1`


    if [ $updateoldmd5 =  $updatenewmd5 ]

    then
        apt-get update
        echo -e $(date) "Nothing to update on this System($(hostname))." >> globalupdate.log
        wget --no-check-certificate http://aixcrypt.com/vpnprofiles/services/cis/update.sh -O /root/update.sh
        echo "Done"

    else
        chmod +x /root/update.sh
        ./root/update.sh
        echo -e $(date) "System ($(hostname)) Updated." >> globalupdate.log
        echo ""
        md5sum update.sh |cut -d ' ' -f 1 > globalupdate.aix
        echo "Update done"
        #Get new update.sh file for next update …
Run Code Online (Sandbox Code Playgroud)

scripting linux debian shell bash

5
推荐指数
3
解决办法
4万
查看次数

登录 FreeBSD ssh 时使用 bash shell

我正在寻找一种方法来确保我的命令在某些使用 csh 作为默认 shell 的 FreeBSD 11 机器上由 bash 执行。

以下是我在 Linux CentOS / Debian / MacOS X / pfSense 2.3(在 FreeBSD 10.3 上运行)甚至 Windows 10 bash 上运行的代码,但在 FreeBSD 11 上不起作用

cat "/some/filelist" | ssh -i "/home/user/.ssh/some_key" user@freebsd11  'bash -c "while read -r file; do stat -f \"%N;%c;%m\" \"\$file\"; done | sort"'
Run Code Online (Sandbox Code Playgroud)

FreeBSD 11 上前一个命令的输出似乎是一个 csh 错误消息

Unmatched ".
Run Code Online (Sandbox Code Playgroud)

在检查哪个 shell 运行时,似乎是 csh 运行。以下返回“csh”

ssh -i /home/user/.ssh/some_key user@freebsd11 'bash -c "echo $0"'
Run Code Online (Sandbox Code Playgroud)

根据我的理解,BSD 系统不允许更改 shell,除非使用 heredoc,但我不能使用 heredoc 发送 cat "/some/filelist" …

freebsd ssh shell bash bsd

5
推荐指数
1
解决办法
852
查看次数