Articles of shell

PowerShell – validation安全证书

不知道为什么这不起作用。 我已经看到其他人也这样做,但我使用安全的信用,不知道这是否与它有关。 $ domain.name是空的 $global:username=read-host "Domain Admin User (domain\username)" read-host "Domain Admin Password" -assecurestring | convertfrom-securestring | out-file C:\windows\temp\ap.txt $global:Password=cat c:\windows\temp\ap.txt | Convertto-SecureString $LDAPCON="LDAP://" + (Convert-ToDistinguishedName $domainfqdn) $domain = New-Object System.DirectoryServices.DirectoryEntry($LDAPCON,$username,$password) $domain.name $global:Creds = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $password

如何通过shell脚本查找MariaDB的最新binlog?

我想在/var/log/mysql/find最新的mysql二进制日志,但是我发现binlog的名字是mariadb-bin.0000* ,我们也有mysql-bin.index ,所以对我来说真的很难使用shell脚本来区分它们。 我的想法是通过他们的文件types,即“Mysql复制日志”来查找binlog,然后按修改时间对它们进行sorting,但我不知道该怎么做。 任何人都可以帮助我吗?

PowerShell脚本来清​​理FTP用户文件夹

我们有一个50个用户的FTP服务器,他们有一个主文件夹(如下)和5个子文件夹。 我正在寻找一个脚本,将每周清理子文件夹的内容。 但是不要触摸子文件夹中的存档文件夹,并为所有50个用户执行此操作。 C:\ ftp \ ftp-users jmartin – jmartin-a1 jmartin-a2 jmartin-a3 jmartin-a4 jmartin-a5存档

如何在所有远程服务器上并行执行带有args的bash脚本(如果从远程服务器中的远程服务器)

请仔细阅读问题,然后给予解决scheme ……………. 我们在目录中有3个文件 myscript.sh(myscript.sh文件包含许多函数,并从serverlist.txt文件启动/停止所有对/单对,函数如 对于start()函数:检查arg2是全对还是单IP对,然后启动它。 对于stop()函数:它检查arg2是全对还是单IP对然后停止它。 对于rules()函数:它检查arg3是否是new-rules或者same-rules然后拷贝它 对于put_files()函数:它与arg2一起使用,并检查arg2是全对还是单IP对 like: ./myscript.sh put_files all-pair or ./myscript.sh put_files 192.168.20.13-192.168.20.21 2. deployment_function文件:deploymet_function文件以pair的forms从server_list.txt文件中获取IP-Pair。 server_list.txt server_list.txt的conatin会以IP-Pair(C ++ Server-数据库服务器)的forms主机IP。 192.168.20.13-192.168.20.21 192.168.20.22-192.168.20.34 192.168.20.42-192.168.20.45 我的脚本的基本语法: ./myscript.sh arg1 arg2 arg3 其中,arg1 =开始或停止或放置文件 arg2 =全双或单个ip对 arg3 =新规则或相同的规则 我们正在执行我们的脚本在以下几个方面….. ./myscript.sh启动所有对新规则 ./myscript.sh start 192.168.20.13-192.168.20.21新规则 ./myscript.sh停止所有对或 ./myscript.sh stop 192.168.20.13-192.168.20.21 问题:实际上,它的执行很好,但是由于它是连续执行的,所以在所有IP对上执行需要更多的时间。 首先是192.168.20.21,然后是192.168.20.13,然后是192.168.20.34和192.168.20.22 …..当它遇到错误时,在该服务器上停止。 而不是在其余的IP对上执行。 我想在所有的服务器上并行执行myscript,如果出现错误,然后列出该服务器并执行furtur。 所以有没有任何解决scheme,我可以并行执行相同的脚本,而不用改变myscript。 所以请帮我找出正确的方法来做到这一点….

不同的shell在特定的机器上进行SSHlogin

我有没有本地帐户的Active Directory用户,所以他们不能使用chsh 。 他们可以login到多种不同types的服务器,大部分时间/bin/bash是正确的shell,或者至less对于大多数用户来说,他们首选的shell在大多数服务器上都可用。 但是,有几个例外情况。 例如,大多数Mac都通过Homebrew安装了自定义/最近的shell。 他们应该例如保持/bin/bash作为系统shell(没有符号链接作弊!),但通过Homebrew在/usr/local/bin/bash安装了更新的Bash。 这在大多数服务器上不存在的事实似乎阻止了使用AD属性来更改全局默认shell。 是否可以指定sshd为特定计算机上的此类帐户启动的shell(无论login/交互状态如何)? 例外情况往往数量less,迄今为止只发生在希望定制的用户的控制之内的开发机器上。 或者,还有其他AD属性可用于提供更多的粒度(例如,指定/usr/local/bin/bash并且对缺less此path的服务器上的另一个属性具有回退行为)。

Linux操作系统(在redhat); crontab的; bash – 脚本在shell中工作,但不在Crontab中 – 将命令分配给variables失败

我知道我的问题被问了几次,但是我的问题没有解决办法。 在我的公司有一个运行在RedHat Mashine上的应用程序。 用户通过ssh将基于文本的GUI连接到此服务器。 此应用程序不支持密码老化重置密码。 我做了一个脚本检查密码老化时间,并发送电子邮件给每个用户。 该脚本运行良好,但不能在crontab中工作。 几个testing(触摸testing文件)显示crontab正在工作,所有脚本都被执行。 我在新脚本的开头用一个简单的echo命令validation了这一点。 用几个回声进行更深入的调查表明,将一个命令分配给一个variables是有问题的。 这工作了几年,并在几个crontabs VAR = `ls` 我testing了其他版本: VAR = $(ls) VAR = `/bin/ls` VAR = $(/bin/ls) 脚本片段: (… generating user/email array …) echo "—————-START "$LOGDATE" —————" >> $LOGFILE for ((i=0; i<${#USER[*]} ; i++)) do USERNAME=${USER[$i]} EMPFAENGERNAME=${EMPFAENGER[$i]} TEMP1=`chage -l $USERNAME | grep 'Kennwort läuft ab'|cut -d ":" -f2` […]

Powershell ForEach循环吐出格式不正确的samAccountName

我正在尝试从一个组中获取一个帐户名称列表,然后在每个主目录中创build一个文件。 但是我遇到的问题是每次都不要取得帐户(egjsmith),我得到@ [h = samAccountName = j.smith]或者其他东西。 我迷失在我做错了什么。 我是一个Linuxpipe理员,被迫与PS一起工作。 Get-ADGroupMember "Group" | select sAMAccountName | ForEach-Object { Copy-Item H:\test.txt H:\$_\test.txt } 它最终是H:\@[samAccountname=j.smith]\test.txt而不是H:\j.smith\test.txt 我非常感谢帮助,因为我想在周末前完成这个项目

无法将PowerShellvariables传递给命令行参数

我正在处理一个脚本,它需要一个PowerShellvariables,并在运行net命令的脚本块中使用它。 这里是代码: $User = "domain\user" Invoke-Command -ComputerName $ComputerName -ScriptBlock { net localgroup administrators $User /add } -Credential $cred 当我运行它,这是我得到的错误消息: The group already exists. + CategoryInfo : NotSpecified: (The group already exists.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError + PSComputerName : GMCR77569 More help is available by typing NET HELPMSG 2223. 所以看起来net命令正在尝试创buildpipe理员组。 我没有在Google上find那么多。 另外,我正在使用Invoke-Command,因为我需要能够传递凭据。 我相信这是简单的,但我不明白。 先谢谢你!

如果服务停止,发送电子邮件通知

使用此脚本在一个或多个服务未运行时获取电子邮件通知。 这里有一些错误,它发送: System.ServiceProcess.ServiceController正在运行 $service=Get-Service "VSS" if ($Service.Status -ne "Running") { $Body ="$service is not running" } else { $Body = "$service is running " } $From = "email" $To = "emails" $SMTPServer = "smtp" $SMTPPort = "587" $Username = "email" $Password = "password" $Body =$body $Subject = "$computer$ status" $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort); $smtp.EnableSSL […]

具有多个(超过100个)select选项的脚本

最后决定在这里问问题之前,我一直在竭尽全力。 我是新的Linux / Bash脚本。 所以有我的问题: 我正在使用这个小脚本来阻止某些国家访问我的服务器(这是一个debian的小webserver) #!/bin/bash TERM='xterm' # for IP in $(wget -O – http://www.ipdeny.com/ipblocks/data/countries/**country.zone**) ; do ipset add blacklist $IP done 事情是,我不想重新编辑脚本,每当我想阻止另一个国家(改变country.zone)有238个国家地区,我可以select。 我的问题是 – 我怎样才能做一个脚本,显示我的整个区域列表,并要求我select一个或多个(例如:cn.zone),将下载并添加到ipset。 我知道添加那些我不想阻止和阻止其他的我更容易,我知道我可以一次select多个区域{1.zone,2.zone,3.zone}。 基本上我想要一个脚本来显示所有区域(如表格),从那里select一个(或更多),然后脚本将下载选定的区域并将它们添加到ipset中。