Articles of shell

不用调用shell的SSH

我已经设法搞乱了我系统上的一些共享库,现在我的shell不能运行,从而将我locking在系统之外。 在远程系统上configuration的ssh , sftp和scp似乎都依赖于shell,所以这些替代scheme都没有了。 真的,这不是一个大问题,因为我有一些遥控手,可以通过控制台更改我的shellsh 。 然而,我很好奇,到SSH协议的机制,是否有可能在远程系统上进行身份validation和执行一些操作(例如,修改/etc/passwd ),而无需调用shell? 编辑 公正地说,对于那些build议在ssh命令string(例如, ssh myhost /bin/sh ) 之后指定替代命令/ shell的人:手册页确实声明: If command is specified, it is executed on the remote host instead of a login shell. 这肯定会令人困惑。

需要格式化电源shell输出

我是相当新的PowerShell,并已尝试各种方法来分割从我发现以下PowerShell脚本的结果,但没有运气。 目前这个脚本列出了每个服务器的结果之间没有差距的4列中的所有内容。 (当它完成一个服务器的结果时,我想要在每个结果之间使用服务器名称来填补空白,甚至是头文件,以便在多个服务器上运行时更易于阅读) 任何帮助获得这种格式将不胜感激。 Get-WmiObject -ComputerName ("server1","server2") Win32_UserProfile | % { $userinfo = [WMI] ($_.__Path -Replace "Win32_UserProfile", "Win32_SID") New-Object PsObject -Property @{ ComputerName= $_.__Server Domain = $userinfo.ReferencedDomainName User = $userinfo.AccountName LastUsed = $_.ConvertToDatetime($_.LastUseTime) } } | export-csv -NoType c:\Results.csv

Python脚本部分无法在RedHat 6.5的init.d /内执行,为什么?

我创build了一个名为rmCluster的init.d脚本,它应该在关机时执行一个简单的python脚本,该脚本使用botoclosures特定的服务器群集,位于/etc/init.d/rmCluster 755 perms写为: #!/bin/sh # # chkconfig: 0 1 1 # description: My service # # Author: Me # # ### BEGIN INIT INFO # Provides: rmCluster # Required-Start: # Required-Stop: # Default-Start: 0 # Default-Stop: 0 # Short-Description: My service # Description: My service ### END INIT INFO case $1 in start) python /usr/local/sbin/instanceStopper.py […]

bash:将date转换为unix时间戳更改时间戳

在$ company的xen-servers(DOM0或DOMU)上运行以下命令会给我一个负数,在每个其他系统零(0)(即使在我的cygwin中)。 date -d "1970-01-01T00:00:00" "+%s" $TZ未设置, /etc/localtime与/usr/share/zoneinfo/UTC文件相同 date在GNU coreutils的版本8.12中。 这里出了什么问题? 什么额外的信息可能需要?

密码检查bash脚本调用期望

背景:我必须将一个文件从一台服务器复制到testing环境中的100多台服务器。 一旦文件被复制,它需要对文件的权限进行更改/validation。 这些都是Linux服务器。 他们中的大多数具有相同的login密码,但有些可能不会。 我需要在我的bash脚本中做一个循环的帮助。 这实际上是在期待。 我想做的更好或修复的地方是一些事情 预期密码的部分。 (*部分),则应在1次密码尝试失败后退出脚本,并将该IP转储到名为“fail.txt”的文本文件 理想情况下,如果没有连接到服务器,应该有一块也将IP转储到fail.txt。 我试图写一个循环的密码片,但我不确定这种思维方式是否成立。 我试着添加另一个“期望密码”,以为如果第二次得到提示,就退出,但是我很难让这个工作成功。 谢谢! #!/bin/bash while read ip; do sleep 2 expect <<- DONE set timeout 1 spawn scp yoman.txt root@$ip:/felixtemp if above command fails, dump the IP to fail.txt, otherwise continue expect yes/no { send yes\r } expect Password: { send aaaaaa\r } #if this […]

-ErrorAction默默无闻地继续工作

我正在使用PowerShell,我正在从C#调用脚本。 我试图从不同的服务器复制日志, foreach($server in $args) { $destination = "\\$server\$path" if(!(Test-Path $destination)) { New-Item -ItemType directory -Path $destination } foreach($log in $logsTaskAgent) { Write-Host "Backup $log log $server" $filename = "{0}{1}_{2}_{3}.evt" -f $destination,$server,$log,$date Write-Host "Filename: $filename" if($password -and $userName) { $logFile = Get-WmiObject Win32_NTEventlogFile -ComputerName $server -Credential $credential -ErrorAction SilentlyContinue | where-object { $_.logfilename -eq $log […]

试图让我的PowerShell函数中的第二个参数工作

我有一个函数,我正在从远程计算机的registry中取出DisplayName和UninstallStrings。 如果我只使用“$软件”参数,它适用于我的本地PC。 但是,如果我添加“$ compname”variables并尝试一个调用命令到达远程PC来做同样的事情,它会中断。 这是我到目前为止: Function Get-Uninstallers { param( [parameter(mandatory=$true)][string]$compName, [parameter(mandatory=$true)][string]$software, $soft = ('"' + ("*" + $software + "*") + '"') ) Invoke-Command -ComputerName $compname { Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall | ` Get-ItemProperty | Where-Object {$_.DisplayName -like $soft} | Select-Object DisplayName,UninstallString }} 我已经尝试了$ softvariables的各种不同的组合,带/不带引号,单引号,没有*之一,没有两个。 我知道我做错了什么,但我无法想象出我的生活。 我尝试在命令行上将参数添加到参数,并将它们排除在外。 这里是我得到的输出样本,当我填写variables: PS C:\> Invoke-Command -ComputerName 61966 { Get-ChildItem […]

想要导出CSV属性的variables

我想build立一个“〜表”来保存有关各种计算机的信息(例如,名称,IP地址和MAC地址,但稍后可能会添加更多信息)。 这是我到目前为止: $Computers = "Server1", "Server2", "Server" #Eventually will get from file $a = $Computers.length $User = Read-Host "Enter Username" $Cred = Get-Credential $User cls $ComputerInfo = @{NAME = 1..$a; IP_ADDR = 1..$a; MAC_ADDR = 1..$a} $i = 0 ForEach ($Computer in $Computers) { $wmiquery = get-wmiobject win32_networkadapterconfiguration -computer $Computer -filter "IPEnabled='True'" -Credential $Cred $ComputerInfo.NAME[$i] […]

如何正确处理在服务脚本中删除pid.file

我正在尝试编写应用程序的服务脚本。 所以我可以像这样控制它: ./myscript.sh start|stop|status 启动pid.file与进程id创build,并基于它我可以检查状态和停止进程。 在停止命令我删除pid.file – 没关系。 但是,如果应用程序exception崩溃 – 关机等, pid.file不能删除,我需要手动删除它。 如何正确处理脚本中的这种exception情况?

阻止用户访问文件夹

我有一个拥有80个用户的Centos 7服务器,并且我有许多80个用户可以访问的目录。 不过,我想要一个特定的用户不能访问一个单一的目录,我该怎么做? 我只想阻止一个用户访问特定的目录,保持所有其他用户的权限不变。 我怎样才能做到这一点?