刚刚更新了代码......我每次都在“其他”序列上退出。您可以从我的服务器下载 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) 检查指定 URL 是否有效的最快方法是什么?(以 OK http 状态代码响应)?
现在我正在使用 curl,但我有一堆 URL 需要循环测试,所以我正在寻找最快的解决方案。
除了 wget 之外还有其他选项要检查吗?
我发现这个解决方案对我有用,但我不明白它是如何工作的,因为 sed 命令将其自己的参数用单引号括起来,并且整个 ssh 命令也用单引号传递。这是从 OSX (bsd) 运行的。
ssh -t -p 22 root@thehost 'for user in $(/bin/ls -A1 /var/cpanel/users) ; do if grep -q RS=paper /var/cpanel/users/${user}; then sed -i 's/^RS=paper_lantern$/RS=x3/' /var/cpanel/users/${user}; fi; done'
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么这样做,以及为什么我不需要转义 sed 命令的单引号 - 我在任何地方都找不到参考?谢谢。
这里已经有很多这样的问题,但每个人都推荐(一种变体)以下解决方案:
screen -dmS somename bash -c "/path/to/script; bash -l"
Run Code Online (Sandbox Code Playgroud)
例如,当script结束时,运行一个新的bash.
不幸的是,这对我不起作用,因为
script$BASHPID 变量用于某事script运行始终运行,如需要使用CTRL-C终止它script(相同$BASHPID)所以,问题是:
screen在分离模式下启动(例如在启动时) - 通常这是由-dm.profile,但这是可以与克服source ~/.profile的script自身script启动一些其他的(二进制)程序究竟会持续至CTRL-Cscript我必须得到相同的bash(相同的$BASHPID(因为需要运行另一个脚本取决于它)总之需要模拟如下交互工作:
screenecho $BASHPID/path/to/script经过以上,以后,我可以做
screen -ARR) …set -x或set -v打印每个执行的命令。
如何在命令开始执行时打印命令?
我正在使用 Jenkins 构建 HTML 文档并将其部署到本地 Apache Web 服务器以供我们的开发人员使用。当我在终端中运行命令时,一切都安装正确(证明服务器设置正确)。但是,当从 Jenkins 内部运行相同的命令时,它们会被调用但没有任何变化。它不会删除html.zip(第 18 行),不会将文件移动到 中/var/html/www/subdir,并且不会报告curl请求失败之外的任何错误。我对我做错了什么有点迷茫。
我应该注意,我将整个脚本称为sudo. 我知道这是不安全的,但我想我会先尝试让脚本工作,然后再更改。为了确保user在安装文档时不会遇到问题,我暂时允许它以 sudo 身份运行任何命令而无需密码。同样,我知道这是不安全的,但本着试图消除变量的精神,我添加了这个。
Jenkins 像这样调用这个脚本:
sudo ./documentation-publisher.sh
目前对脚本的权限限制最少,777。调用ls -l脚本报告:
-rwxrwxrwx 1 devop developers 1144 Dec 3 10:29 documentation-publisher.sh
我尝试了这篇文章中关于在脚本中显式设置路径的建议,但没有发现任何差异。使用的每个命令的显式路径也不会改变行为。
#!/bin/sh -x
echo "Archiving generated HTML for transfer..."
cd Example/docs/html/
zip -r html.zip ./
scp -i ~/.ssh/id_rsa html.zip user@my.host.example.com:/home/user
ssh -i ~/.ssh/id_rsa user@my.host.example.com
echo "Extracting generated HTML into www directory..."
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
unzip -o …Run Code Online (Sandbox Code Playgroud) 在工作中,我们有一个旧的 C 程序,它与霍尼韦尔的工业手持终端一起工作。
该终端有自己的 ssh 客户端来连接到 linux redhat 6.6 服务器。一旦它连接到 linux box(使用某个用户),bash shell 就会启动一个 C 程序,并带有以下参数
export TERM=vt200
stty raw icrnl -echo
$APLI_EXEC/program param1 param2
Run Code Online (Sandbox Code Playgroud)
所以流程就像 => 客户端 ssh --> ssh 服务器-> bash --> c 程序
应用程序(或看起来)运行良好,但有时(每周 1-3-5 次)随机终端停止从服务器接收数据,但应用程序接收来自服务器的输入。就像在 shell 中编写 Ctrl+S 一样。
使用 strace 调试应用程序和 ssh 进程时,我意识到一些奇怪的事情:
应用程序 strace 很好
write(1, "1", 7) = 1
Run Code Online (Sandbox Code Playgroud)
但是 ssh 过程的 strace 不好(我认为..是的,我看到 ioctl 没有 echo 参数,但是...)
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(3, "\227\316\242\350\261\330)\300e\210\352\367\2VX\24\305\2474\272\371\34\273n{\323p.\211\17H\327"..., 16384) …Run Code Online (Sandbox Code Playgroud) 根据手册页,右侧的字符串=~被视为扩展正则表达式。我尝试了以下方法来匹配两边被空格包围的“ok”,但没有任何效果。知道我做错了什么吗?也许有一个需要启用的shell选项?
if ! [[ $RESULT =~ \s"ok"\s ]]; then
if ! [[ $RESULT =~ [:space:]"ok"[:space:] ]]; then
if ! [[ $RESULT =~ [ \t\r\n\v\f]"ok"[ \t\r\n\v\f] ]]; then
Run Code Online (Sandbox Code Playgroud)
注意:下面的自我回答问题。
在 docker 映像的入口点 shell 脚本上,我想确定 postgresql 容器是否可以侦听连接。对于 mysql,我使用了以下代码段:
while ! mysqladmin ping -h"$MOODLE_DB_HOST" -P $MOODLE_DB_PORT --silent; do
echo "Connecting to ${MOODLE_DB_HOST} Failed"
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
如何使用 postgresql 实现类似的功能?
我有下面的内容,/etc/fstab然后当我cd ~/dat0在那里做任何事情时,例如选项卡完成,每次都需要 10 秒。即它不缓存任何东西。
有什么办法可以加快速度吗?
ss@dat0: /home/ss/dat0 fuse.sshfs defaults,_netdev,identityfile=/home/ss/.ssh/id_rsa,uid=1000,gid=1000,allow_other 0 0
Run Code Online (Sandbox Code Playgroud)