我通过ssh在多台服务器上工作。 我已经使用下面的脚本自动复制了ssh授权密钥。 唯一的问题是它要求远程服务器密码4次。 我怎样才能改变这个问题一次。 #!/usr/bin/env bash # # Usage: # copy-ssh-key.sh example.com # echo -e "\n>>> Creating remote .ssh folder" ssh -t $1 "mkdir ~/.ssh" echo -e "\n>>> Updating .ssh folder permissions" ssh -t $1 "chmod 700 ~/.ssh" echo -e "\n>>> Copying Auth Keys" cat ~/.ssh/id_rsa.pub | ssh $1 "cat >> ~/.ssh/authorized_keys" echo -e "\n>>> […]
我写了一个小的bash脚本,每隔10分钟运行一次,检查某个程序是否正在运行,是否运行。 但是,我注意到,有时我有两个相同的程序运行的实例(使用ps ax | grep "gateway" )。 我究竟做错了什么? #! /bin/bash case "$(ps ax | grep -c gateway.jar)" in 1) echo "Restarting Java Gateway (1): $(date)" >> /home/user/gateway.log java -jar /home/user/project/unx/java/gateway.jar & ;; 0) echo "Restarting Java Gateway (0): $(date)" >> /home/iwidgetuser/gateway.log java -jar /home/user/project/unx/java/gateway.jar & ;; *) echo "Gateway is running! Good!: $(date)" >> /home/user/gateway.log […]
我有一个脚本,显然有缺陷: if [ -d "$BACKUP/${DATE_MAX}_"* ] then … fi 这个脚本只有在有一个或者没有目录的情况下才能工作。 如果有像_1这样的多个目录,它将会破坏: functions.sh:93行:[:太多的参数 我怎么能检查多个目录的存在,然后逐一调用删除目录?
问题是关于OTRS客户。 我不能使用外部客户后端,所以我想通过CSV文件更新客户数据库。 我已经写了一个脚本来通过otrs.AddCustomerUser.pl添加新的客户。 但是,我怎么能通过一个脚本批量禁用老客户?
我有一套脚本,在执行相当通用的NetRestore映像后完成客户机部署。 主脚本以root权限运行,然后使用sudo -iu $PROPER_USER …调用另一个“user”脚本sudo -iu $PROPER_USER … 问题是,sudo在这一步失败,并没有真正执行脚本。 我得到这个错误: sudo: unable to execute /bin/bash: Bad address 这是什么意思,我该如何解决这个问题? 有一点想到,我正在更改脚本中的主机名,使用networksetup -setcomputername …
我怎样才能得到augtool(augeas)或类似的常用工具与freetds.conf工作,所以我可以在bash安装脚本自动化一些configuration? 这似乎不工作: augtool print "/files/etc/freetds/freetds.conf" 但是,这是有效的(但由于某种原因,它使用无限透镜,而不是odbc透镜): augtool print "/files/etc/odbcinst.ini" 我曾经尝试过: 我也按照这些说明尝试将odbc镜头关联到freetds.conf: $ augtool –noload augtool> set /augeas/load/odbc/lens odbc.lns augtool> set /augeas/load/odbc/incl /etc/freetds/freetds.conf augtool> load augtool> print /files/etc/freetds/freetds.conf augtool> 我尝试了与inifile和IniFile相同的各种组合,但load失败, error: Lens not found Can not find lens IniFile.lns Can not find lens inifile.lns或Can not find lens inifile.lns 。 其他信息: 错误:似乎没有任何提及freetds或odbc的错误: $ augtool print "/augeas//error" | […]
我有一个脚本backup.sh,它创build一个MySQL数据库的备份,然后SCP将它传送到远程服务器。 这很好,我可以使用crontab每天运行一次,没有任何问题。 但是,我只想存储最近30天的备份,否则几个月后我将拥有数百个冗余的SQL文件。 我真的不知道从哪里开始。 我能想到的唯一方法是有31个子文件夹,每个月的每一天,然后每天replace每个文件。 尽pipe如此,这还不够理想,而且感觉有点肮脏。 下面是我的backup.sh文件的内容,显然有一些关键信息被删除了: #!/bin/bash today=`date +%Y-%m-%d.%H%M%S` mysqldump -u rails -p******** rails > backups/backup-$today.sql sshpass -p '********' scp backups/backup-$today.sql m***d@******.co.uk:custom_backups/backup-$today.sql
我需要一个脚本,它将在Linux系统中从源代码安装一个软件包,并且需要知道如何处理通常由于第一步而出现的错误./configure也许一个软件包缺less他的意志杀死进程,不会完全configuration来自给定源的包。 我有一个脚本,这是一个正常的bash组织 解压源码tar cd进入目录 运行./configure 我需要帮助,以确保例如如果包是GNUCASH和运行./configure返回 Package libxml-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `libxml-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'libxml-2.0' found configure: error: Library requirements (libxml-2.0 >= 2.5.10) not met;consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix […]
我有我的rsyslog和imfile的问题,当我的一个日志文件被截断时失败。 所以要解决这个问题,我已经修改了logrotate脚本,如下所示: "/etc/logrotate.d/logrotate.elasticbeanstalk.tomcat7.conf": mode: "000644" owner: root group: root content: | /var/log/tomcat7/* { size 1M rotate 5 missingok compress notifempty copytruncate dateext dateformat %s olddir /var/log/tomcat7/rotated postrotate (/sbin/service rsyslog stop && rm -f /var/lib/rsyslog/tomcat-catalina && /sbin/service rsyslog start 2>&1) || true endscript } 在tomcat7文件夹中有或多或less的15个文件,它们都小于1M期望catalina.out所以我希望logrotate在处理这个文件时只执行postrotate脚本,但是在这里它是做什么的: [ec2-user@ixxxxxxx]$ sudo logrotate -v /etc/logrotate.d/logrotate.elasticbeanstalk.tomcat7.conf reading config file /etc/logrotate.d/logrotate.elasticbeanstalk.tomcat7.conf reading config […]
我有一个设置,行为方式我不能让我的头。 所以我有一个本地bash脚本generateTrafficOnHosts.sh ,它从文件读取IP地址。 然后在每个远程主机上调用一个bash脚本getTraffic.sh ,也就是每个调用的IP地址。 但是,在通过ssh执行第一个远程执行之后,它就完成了。 这是我的本地generateTrafficOnHosts.sh脚本: #!/bin/bash # Connects to a series of hosts and runs the get-traffic.sh script on them. # The hosts are taken from a file with a list of randomly generated IDs, # while their IDs are taken from a connectfile. # … # some convenience functions here # … […]