我目前正在设置一个相当复杂的 bash 配置,它将在多台机器上使用。我试图找出是否可以确定我是通过 SSH 登录还是在本地计算机上登录。例如,通过这种方式,我可以根据该事实设置一些别名。就像别名一样halt
,restart
因为停止远程服务器可能不是最好的做法。
到目前为止我所知道的是,环境变量SSH_CLIENT
是在我通过 ssh 登录时设置的。不幸的是,当我使用sudo -s
. 我也知道我可以向 sudo 传递一个参数,指示 sudo 将我所有的环境变量复制到新的 shell 环境中,但是如果我不想这样做,还有其他方法吗?
Ubuntu 10.04 使用的密码是如何生成的?我知道他们使用 SHA 512 作为散列算法,但我认为已经完成了某种加盐。我需要自己生成这样的密码。我怎样才能做到这一点?有没有一个命令行工具?
我尝试从以下字符串(使用创建who am i
)中提取主机名:
username pts/0 2010-10-05 17:30 (www.example.com)
Run Code Online (Sandbox Code Playgroud)
我需要一个解决方案,如果 (www.example.com) 不存在(当我在本地登录时就是这种情况),它也可以工作。此外,该解决方案还必须在who am i
返回以下字符串的 Mac 上运行:
username ttys006 Oct 5 16:47 (www.example.com)
Run Code Online (Sandbox Code Playgroud)
问题是 mac 在日期中放置了空格,这使得它难以使用cut
。我认为,必须有一个sed
用于提取子字符串的解决方案,但是我在弄清楚如何正确使用时遇到了问题sed
。
更新:疯狂的方法
这种方法只有在实际存在括号时才有效。如果不是,则会发生以下情况:
$ who am i | cut -f2 -d '(' | tr -d ')'
username ttys006 Oct 5 16:47
Run Code Online (Sandbox Code Playgroud)