かべぎわブログ

ブログです

PowerShellで管理者権限でしか実行できないようにする

概要

PowerShellのスクリプトを管理者権限でしか実行できないようにしてみます。

前提

PowerShell v4 以上

スクリプト

こんなかんじ
#Requires -RunAsAdministratorを書いてあげる。

#Requires -RunAsAdministrator

# ↓確認用
Write-Host 'wawawa'

実行してみる

ためしに一般ユーザの一般の権限でうごかしてみる。

> .\admin.ps1
.\admin.ps1 : The script 'admin.ps1' cannot be run because it contains a "#requires" statement for running as Administrator. The current PowerShell session is not running as Administrator. Start PowerShell by using the Run as Administrator option, and then try running the script again.
At line:1 char:1
+ .\admin.ps1
+ ~~~~~~~~~~~
+ CategoryInfo          : PermissionDenied: (admin.ps1:String) [], ScriptRequiresException
+ FullyQualifiedErrorId : ScriptRequiresElevation

管理者権限で実行するとこんなかんじ。
うごく。

> .\admin.ps1
wawawa

おわりに

べんりですね。

Windows PowerShellクックブック

Windows PowerShellクックブック

  • 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/10/23
  • メディア: 大型本
  • 購入: 4人 クリック: 72回
  • この商品を含むブログ (15件) を見る

PythonでIAMグループとかIAMロールをかんたんに削除してくれるPythonをかいた

概要

PythonでIAMグループとかIAMロールをかんたんに削除してくれるPythonをかきました。

これと
IAMグループをかんたんに削除してくれるPythonをかいた - かべぎわブログ
これ
IAMロールをかんたんに削除してくれるPythonを書いた - かべぎわブログ

りょうほういっしょにできんじゃね?という意見をもとにくっつけた。
classで継承させたりしている。
これつかいかたあっているのかな???

コード

こんなかんじ。

つかいかた

こんなかんじ

usage: ./delete_irorio.py [-h] (--group-name GROUP_NAME | --role-name ROLE_NAME) [--profile [PROFILE]]

おわりに

classむずかしい

入門 Python 3

入門 Python 3

PowerShellで管理者権限かどうか判定する

概要

PowerShellでAdministratorかどうかを判定してみます。

スクリプト

こんなかんじ。

$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$bool_admin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if ($bool_admin) {
    Write-Output 'Admin'
} else {
    Write-Output 'NotAdmin'
}

実行してみる

管理者権限で実行してみるとこう。

> .\check_admin.ps1
Admin

そうじゃないとこう。

> .\check_admin.ps1
NotAdmin

おわりに

おわり。

Windows PowerShellクックブック

Windows PowerShellクックブック

  • 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/10/23
  • メディア: 大型本
  • 購入: 4人 クリック: 72回
  • この商品を含むブログ (15件) を見る

IAMグループをかんたんに削除してくれるPythonをかいた

概要

IAMグループをかんたんに削除してくれるPythonをかきました。
グループを削除する際にはポリシーをデタッチしたりユーザをリムーブしたりいろいろしなければいけないですがこのスクリプトはそれらを解決します。
いろいろデタッチしたりしてからグループを削除してくれます。

スクリプト

おわりに

resourceたのしい。

入門 Python 3

入門 Python 3

VSCodeで引数を与えてデバッグする

概要

VSCodeで引数を与えてデバッグしてみます。

手順

VSCodeのデバッグ画面の設定画面をクリックします。
f:id:kabegiwakun:20191012195717p:plain

launch.jsonが開くのでそこに"args":["--group-name", "test_group"],こんなかんじで入力してあげます。
この例だと./wawawa.py --group-name test_groupと実行したのとおなじかんじになります。
f:id:kabegiwakun:20191012195856p:plain

おわりに

たまにわすれがち

Visual Studio Codeデバッグ技術 (技術の泉シリーズ(NextPublishing))

Visual Studio Codeデバッグ技術 (技術の泉シリーズ(NextPublishing))

IAMロールをかんたんに削除してくれるPythonを書いた

概要

IAMロールをかんたんに削除してくれるPythonをかきました。

ロールを削除する際にはポリシーをデタッチしたりインスタンスプロファイルをリムーブしたりいろいろしなければいけないですがこのスクリプトはそれらを解決します。
いろいろデタッチしたりしてからロールを自動で削除してくれます。

スクリプト

こんなかんじです。

つかいかた

こんなかんじ。
だいたいわかるとおもう。
基本的にはロール名を指定してあげるだけ。

usage: ./delete_role.py [-h] [--profile [PROFILE]] --role-name ROLE_NAME

required arguments:  
  --role-name ROLE_NAME The name of the role to delete.

optional arguments:  
  --profile [PROFILE]   Use a specific profile from your credential file.

おわりに

ぼくのPython力があのころとくらべてすごくあがっていることがわかる

イシューからはじめよ ― 知的生産の「シンプルな本質」

イシューからはじめよ ― 知的生産の「シンプルな本質」

自分のインスタンスIDを取得する方法まとめ

自分のインスタンスIDを取得する方法をまとめてみた。

メタデータを取得する

メタデータをcurlなりwgetなりで取得する。

curl http://169.254.169.254/latest/meta-data/instance-id
i-XXXXXX

cloud-utilを実行する

以下のコマンドを実行する。
AmazonLinuxであればデフォルトでインストールされている。
そうでないOSの場合はcloud-utilをインストールしてあげる必要がある。

ec2-metadata -i
i-XXXXXX

cloudinitのディレクトリを参照する

cloudinitのディレクトリにインスタンスIDがあるのでそれを見てみる。

cat /var/lib/cloud/data/instance-id
i-XXXXXX

AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー

AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー

PowerShellでブレース展開みたいなことをやってみる

概要

PowerShellでブレース展開みたいなことをやってみます。

やってみる

こんなかんじ。

PS C:\> 'web','db','mq' | % { "$_-server" }
web-server
db-server
mq-server

またはこう。

PS C:\> 1..3 |  % { "server-$_" }
server-1
server-2
server-3

フォーマットもつかえる

PS C:\> 1..3 |  % { "server-{0:D2}" -f $_ }
server-01
server-02
server-03

おわりに

べんりですね

Windows PowerShellクックブック

Windows PowerShellクックブック

  • 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/10/23
  • メディア: 大型本
  • 購入: 4人 クリック: 72回
  • この商品を含むブログ (15件) を見る

Powershellで必須の引数を定義する

概要

PowerShellをつかって必須の引数を設定してみます。

そもそも引数を設定するには

こんなかんじで設定できる。

Param($ichi, $ni)

# 引数を出力する
Write-Host $ichi
Write-Host $ni

スクリプトを実行したときにたとえばこんなかんじになる。

.\script.ps1 wawawa sasasa
wawawa
sasasa

実行時に変数名をオプションをとして実行することもできる。

 .\script.ps1 -ni sasasa -ichi wawawa
wawawa
sasasa

必須の引数を定義する

本題の必須の引数を定義してみる。

以下のようなかんじで[parameter(mandatory)]$変数名で指定してあげる。
以下は$niを必須に指定している。

Param($ichi, [parameter(mandatory)]$ni)

引数を1つだけ指定して実行すると$niの値の入力を促される。

.\script.ps1 wawawa

cmdlet script.ps1 at command pipeline position 1
Supply values for the following parameters:
ni:

おわりに

usageでいろいろなことを書くのもいいけどこういう制御もちゃんとしてあげたい。

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShellで自分のファイル名を取得する

概要

PowerShellをつかって実行中の自分のファイル名を取得してみます。

こんなかんじでできます

こんなかんじでできます。

$my_script_name = $myInvocation.MyCommand.name

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

AttributeError: module 'logging' has no attribute 'basicConfig'のエラーの解消法

概要

Pythonでこんなかんじのエラーがでた。

$ python logging.py

Traceback (most recent call last):
  File ".\logging.py", line 1, in <module>
    import logging
  File "C:\Users\takak\blog_python\logging.py", line 2, in <module>
    logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')

AttributeError: module 'logging' has no attribute 'basicConfig'

ちなみにPythonのコードはこんなかんじだった。

import logging
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')

logging.warning('わーにんぐ')

解消法

Pythonスクリプトのファイル名がlogging.pyとなっていたのが原因。
loggingはloggingモジュールの中で使われているので使わないほうがよいのです。

スクリプト名を変えてあげる。

$ bash ./logging.py log_dasu.py
$ python ./log_dasu.py
WARNING:root:わーにんぐ

おわりに

すこしはまる。

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

GitでCommitを取り消す

概要

Gitでコミットを取り消す方法です。

コマンド例

こんなかんじ
直前のCommitを消す方法です。

コミットだけを取り消す

$ git reset --soft HEAD^

コミットとインデックス/作業ツリーも取り消す

$ git reset --hard HEAD^

わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Git使い方入門

コマンドプロンプトでインターネットオプションのプロキシサーバーの設定をする

概要

コマンドプロンプトでインターネットオプションのプロキシサーバーの設定をしてみます。

コマンド

こんなかんじ。

プロキシを使用するをONにする

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1

アドレスとポートを設定する

アドレスに127.0.0.1
ポートに8080を設定しています。

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d 127.0.0.1:8080

おわりに

おしまい。

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

Powershellで環境変数を設定する

概要

PowerShellをつかって環境変数を設定してみる。

ユーザー環境変数

HTTP_PROXYにhttp://127.0.0.1:8080を設定している。

[System.Environment]::SetEnvironmentVariable('HTTP_PROXY', 'http://127.0.0.1:8080', 'User')

システム環境変数

HTTP_PROXYにhttp://127.0.0.1:8080を設定している。
要管理者権限

[System.Environment]::SetEnvironmentVariable('HTTP_PROXY', 'http://127.0.0.1:8080', 'Machine')

おわりに

おわり

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

AWSCLIで任意のタグのついたすべてのサービスのリソースを取得する

概要

AWSCLIを利用して任意のタグのついているすべてのサービス(すべてとは言っていない)のリソースを取得してみたいと思います。
このコマンドを利用することによりタグの--filterオプションが存在しないサービスのリソースも取得することができます。

コマンド例

こんなかんじです。
この例ではNameタグがwawawaとなっているリソースを取得しています。

$ aws resourcegroupstaggingapi get-resources --tag-filters Key=Name,Values=wawawa

{
    "ResourceTagMappingList": [
        {
            "ResourceARN": "arn:aws:ec2:ap-northeast-1:123456789012:instance/i-058196ffce03af4b9",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "wawawa"
                }
            ]
        },
        {
            "ResourceARN": "arn:aws:ec2:ap-northeast-1:123456789012:volume/vol-05c851f6690f38cd5",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "wawawa"
                }
            ]
        },
        {
            "ResourceARN": "arn:aws:lambda:ap-northeast-1:123456789012:function:wawawa_lambda",
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "wawawa"
                }
            ]
        }
    ]
}

EC2インスタンスとEBS、Lambdaが応答していることがわかります。

おわりに

結構便利だと思っている。
マネジメントコンソールだとリソースグループでおなじようなことができます。

Amazon Web Services エンタープライズ基盤設計の基本

Amazon Web Services エンタープライズ基盤設計の基本