Articles of bash

无法让cron追加wget的输出

我有一个cronjob设置和运行,但日志文件不断覆盖每次运行。 我希望每次运行cron时都要附加wget输出。 为什么是这个,如何解决? 0 0 * * * wget url/script.php -O – >> /home/user/app/logs/logfile

shell参数中的二进制数据

有没有办法安全地编码/传递参数的shell命令参数可能是二进制的? 我正在执行一个允许用户数据的PHP脚本中的命令。 然而,为了安全起见,我显然希望这个数据能够逃脱。 此外,有时数据可能是二进制的,所以shell命令的简单引用似乎不够。 即使参数数据是二进制文件,确保shell命令参数正确地转义的最佳方法是什么?

Tinydns数据文件用bash更改ip

我正在使用tinydns,并需要dynamic地更改数据文件中的一些IP。 我想为它使用bash脚本。 例如数据文件: +sub1.example.org:282.196.222.245:14400 +sub2.example.org:278.179.280.253:14400 +sub3.example.org:285.117.214.234:14400 bash脚本有两个variables: old="282.196.222.245" new="127.0.0.1" 我期待这个结果: +sub1.example.org:127.0.0.1:14400 +sub2.example.org:278.179.280.253:14400 +sub3.example.org:285.117.214.234:14400 什么是最好的方式来取代旧的IP新(使用awk,sed或smth其他)?

麻烦Debian $ PATH

我想我的$ PATH有问题。 我正在运行一个shell脚本,它抱怨说,它不认识命令,即使当我手动运行它。 shell脚本: #!/bin/bash # DEPLOYMENT USR="test" APP="/srv/www/test" ENV="/srv/www/test/venv" LOG="/var/log" # LOGGING exec > >(tee -a $LOG/log.log) exec 2> >(tee -a $LOG/error.log) # SOFTWARE apt-get update apt-get install -y python-dev build-essential nginx python-pip # PACKAGES pip install virtualenv uwsgi supervisor # ENVIRONMENT mkdir -p $APP virtualenv $VENV source $VENV/bin/activate # FINALIZATION service supervisor restart […]

Riverbed Stringray TrafficManger – API调用Autoscaling

我正在寻求build议,编写一个bash脚本,把我们在AWS中启动的新服务器,并将它们添加到我们的黄貂鱼。 我们正在AWS中创build一个新的环境,这个环境将会是AWS自动调整组中的muilt-AZ,因为我们正在考虑失败。 因为我们将在这些系统的前面使用Stringrays进行负载均衡,WAF,URL重写等等,因为我们启动了一台新机器,我希望能够在Stingray上添加IP地址。 我们使用Cloudforamtion和Puppet作为这个新系统的一部分,这个想法是让Puppet执行一个bash脚本来添加它们。 如果有人这样做了,并指出我在正确的方向,将是最有帮助的。 谢谢。

添加一个额外的检查(bash脚本)到sshd服务器

是否可以在sshd守护进程/服务器的login过程中运行其他脚本? 我想运行一个额外的命令,使用IP地址和尝试的用户名。 如果脚本返回退出状态0,它可以通过,否则login应该被拒绝。 我在SSHD文档中找不到任何东西。

curl按enter或ctr + c才能有正确的回应

这是一个脚本,检查我的这个网站上的当前IP: http : //myip.dnsdynamic.org/并select响应和调用一个API,以更新我的dynamicIP。 这里的脚本: curl –user <myusername>:<mypasswd> https://www.dnsdynamic.org/api/?hostname=eventsonmap.ssh22.com&myip=`curl http://myip.dnsdynamic.org/` 当我运行它的一切都好,但命令停止,并不正常返回它只有在最后我按下ENTER或按ctrl+c我做错了什么? 我错过了一个参数? 这个脚本是每个minyte运行的cronjob,所以我不能按ENTER 更多信息 这里在pastebin中curl -v <same> full curl -v <same>的完整结果在这里是最后两行: * Closing connection 0 * SSLv3, TLS alert, Client hello (1): 并在这里阻止…

如何使用–userspec在chroot中设置ulimit

我有脚本来创build一个最小的chroot(下面),但我不知道如何获得ulimit来处理chroot的进程: #!/bin/bash user=$1 apps="$2" cmd_to_run="$3" shift 3 directory="minimal_chroot" if [ ! -d "$directory" ]; then mkdir -pv $directory/etc >/dev/null 2>&1 grep /etc/passwd -e "^$user" | sed "s/\/home\/$user/\//" >> $directory/etc/passwd grep /etc/group -e "^$user" >> $directory/etc/group mkdir -p "$directory/etc/security/" >/dev/null limits="$directory/etc/security/limits.conf" echo "$user hard nofile 100" >> $limits # cmds can be a space-separated list of […]

Bash脚本:比较path问题

我正在研究遍历文件列表的bash脚本。 我需要比较这个文件的path与包含受限path的数组。 在for循环中,我得到一个像这样的文件的path: dname="$(dirname "$i")"; 这会返回一个相对path,如path / to / file 受限path的列表存储在数组中: restricted=( path/to/file another/path/to/file ); 然后我试图比较path: if [[ "${restricted[*]}" = "$dname" ]]; then //do some things fi 但是,比较似乎并不奏效。 你可以请build议如何解决这个问题? 谢谢。

在ssh之后更改用户并执行多个命令

我有一个简单的shell脚本作为普通用户login,这个普通用户有一个shell准备好切换到具有sudo权限的用户。 但是,我不能得到它的工作: sshpass -p PASS ssh -t -o StrictHostKeyChecking=no user@host "sudo -s -u SUDOUSER;sudo cp -r "${STAGING}/${THEME}/*" /opt/themes/"${THEME}/.";exit;rm -rf "${STAGING}/*"" 这使我login到服务器正常,然后切换到SUDOUSER,但实际上只是停在那里,并提示我作为SUDOUSER在主机上(基本上我login到SUDOUSER在服务器上,并等待命令) 我需要脚本运行并返回到我的始发terminal完成cp和rm任务。 有人可以帮忙吗? 谢谢