MR2オーナー吉田貴幸のブログ

MR2(SW20)オーナー吉田貴幸のブログ。仕事はITインフラエンジニア。愛車の記事とIT関連の情報を発信しています

【Python】 Twitter APIを使って Windows 7 の延長サポート終了日までの日数をつぶやく

はじめに

個人的にPythonの勉強をかねて作成してみました。こちらのソースコードはPython3とWindows10上で動かしています。

なお、Twitter APIの使用制限が厳しいらしいので、ご注意ください。参考記事にリンクを貼っておきます。

実行方法にあるコマンドをバッチにして、タスクスケジューラーで実行すれば自動でつぶやきます。

 

事前準備

  • Pythonインストール

下記の公式ページからダウンロードしてインストールする

www.python.jp

 

  • ライブラリ requests requests-oauthlib のインストール

pipインストールでライブラリをインストールします

pip install requests requests-oauthlib

 

  • Twitterアプリケーションの作成

下記のリンクから登録します。参考記事を参考にしてください。

Twitter Developer Platform — Twitter Developers

 

 

ソースコード 

  •  postWin7EOSLcounter.py
#jsonモジュール
import json
#OAuthライブラリ
from requests_oauthlib import OAuth1Session 
#日付ライブラリ
import datetime

#TwitterAPI
#[Twitter]Consumer API keys
#CONSUMER_KEY
CK = "xxxxxxxxxxxxxxxxxxxxxxx"
#CONSUMER_SECRET CS = "xxxxxxxxxxxxxxxxxxxxxxx"
#[Twitter]Access token & access token secret #ACCESS_TOKEN
AT = "xxxxxxxxxxxxxxxxxxxxxxx" #ACCESS_TOKEN_SECRET
ATS = "xxxxxxxxxxxxxxxxxxxxxxx" #現在の日付の取得 dtToday = datetime.date.today() #Win7のEOSL 2020-1-14 dtWin7EOSL = datetime.date(2020, 1, 14) #Win7のEOSLまでの日にちを計算 strRemainingDate = str((dtWin7EOSL-dtToday).days) #認証処理 twitter = OAuth1Session(CK, CS, AT, ATS) #ツイートポストエンドポイント url = "https://api.twitter.com/1.1/statuses/update.json" #Tweetメッセージ/nは改行コード strtweet = ("[bot] Windows7の延長サポート終了まで\nあと " + strRemainingDate + " 日 ") params = {"status" : strtweet} #投稿/post res = twitter.post(url, params = params) if res.status_code == 200:
#投稿完了の場合 print("投稿しました") else:
  #投稿エラーの場合 print("エラー: %d"% res.status_code)

 

実行方法

コマンドプロンプトから下記のコマンドを実行

python postWin7EOSLcounter.py

 

 

参考記事

  • PythonでTwitter API を利用していろいろ遊んでみる - Qiita

こちらの記事を参考にさせていただきました。大変わかりやすいです!ぜひ見てください。

qiita.com

 

  • TwitterAPIの使用条件

www.itmedia.co.jp

 

【Windows】[バッチ] ping応答がなくなるまで待機する

 

はじめに

対象ホストにpingを打って、応答がなくなるのを待つバッチです。リモートからOS再起動を行いOS終了を待ってから、さらにバッチを実行したい場合などで活用してください。

また、リモートでOS再起動指示→「OS停止待ち.bat」→「OS起動待ち.bat」 と実行することで、バッチファイル上でOS再起動を待つで使えます。

【Windows】バッチで ping応答があるまで待機する OS起動待ち.bat | システム管理者向け - MR2オーナー吉田貴幸のブログ

 

バッチファイル(OS停止待ち.bat) 

  • OS停止待ち.bat

変数「HOST」に対象ホストのIPアドレス/ホスト名を入れてください。または%1で引数化すれば、共通化して使えると思います。

INTERVALとTIMEOUTCOUNTは、ご利用の環境に合わせて変更ください。

@echo off
REM ######################################################
REM OS停止待ちバッチ
REM PING応答がなくなるまでループ
REM 5秒×100回でタイムアウト
REM ######################################################

set COUNT=0
set TIMEOUTCOUNT=100
set INTERVAL=5
set HOST=127.0.0.1

REM ######################################################
REM メイン処理
REM PING結果で"ms TTL="がなかったら終了する REM ###################################################### :error set /a COUNT=COUNT+1 echo %HOST%の停止を待っています....%COUNT% if "%COUNT%" == "%TIMEOUTCOUNT%" goto errortimeout ping -n 1 %HOST% | find "ms TTL=" > NUL if ERRORLEVEL 1 goto notrespond timeout /t %INTERVAL% > nul goto error REM ###################################################### REM 終了処理(PING応答なし) REM ###################################################### :notrespond echo %HOST%が停止しました goto end REM ###################################################### REM 終了処理(タイムアウト) REM ###################################################### :errortimeout echo %HOST%の停止が確認できませんでした(タイムアウト) :end

 

【Windows】 [バッチ] ping応答があるまで待機する

 

はじめに

対象ホストにpingを打って、応答を待つバッチです。リモートからOS再起動を行いping応答を待ってから、さらにバッチを実行したい場合などで活用してください。

反対にOS停止待ちは下記をご参照ください

【Windows】バッチで ping応答がなくなるまで待機する OS停止待ち.bat | システム管理者向け - MR2オーナー吉田貴幸のブログ

 

バッチファイル(OS起動待ち.bat) 

  • OS起動待ち.bat

変数「HOST」に対象ホストのIPアドレス/ホスト名を入れてください。または%1で引数化すれば、共通化して使えると思います。

INTERVALとTIMEOUTCOUNTは、ご利用の環境に合わせて変更ください。

@echo off
REM ######################################################
REM OS起動待ちバッチ
REM PING応答があるまでループ
REM 5秒×100回でタイムアウト
REM ######################################################

set COUNT=0
set TIMEOUTCOUNT=100
set INTERVAL=5
set HOST=127.0.0.1

REM ######################################################
REM メイン処理
REM ping結果の"ms TTL="の文字列が存在するか確認し、存在したら終了 REM ###################################################### :error set /a COUNT=COUNT+1 echo %HOST%の起動を待っています....%COUNT% if "%COUNT%" == "%TIMEOUTCOUNT%" goto errortimeout ping -n 1 %HOST% | find "ms TTL=" > NUL timeout /t %INTERVAL% > nul if ERRORLEVEL 1 goto error REM ###################################################### REM 終了処理(PING応答あり) REM ###################################################### echo %HOST%が起動しました goto end REM ###################################################### REM 終了処理(タイムアウト) REM ###################################################### :errortimeout echo %HOST%の起動が確認できませんでした(タイムアウト) :end

 

【Windows】 [バッチ] 資格情報を指定してリモートデスクトップ接続する

 

説明

Windowsのリモートデスクトップ接続(mstsc.exe)を使用して、サーバーやリモートPCにリモートデスクトップ接続する際に、初回接続時にユーザー名とパスワードを要求されて認証が必要になってしまいますが、資格情報を事前に指定することで、資格情報の要求なしに接続することが出来ます。

システム管理をしていると、GUIで操作をしていると何かと煩雑になることがあるので、これをバッチにしておき、毎回認証要求なしにリモートデスクトップ接続をできるようにしました。

 

また、初めてリモートデスクトップ接続先サーバーに接続した際に「このリモートコンピュータの IDを識別できません。」のメッセージが出ることがあるので、あらかじめレジストリにキーを追加しておき、メッセージの表示を回避します。(ポリシーの設定により出ない場合もあります)

 

なお、バッチファイルではリモートデスクトップ接続後に、追加した資格情報及びレジストリの削除しています。

 

使い方

1.下記をコピーして、ファイル名を「mstsc.bat」 で保存します。

  • mstsc.bat
@Echo off
REM ############################
REM #接続先情報
REM ############################
Set SERVERNAME=%1
Set PORT=3389
Set USERNAME=%2
Set PASSWORD=%3

if ""%1""=="""" goto error
if ""%2""=="""" goto error
if ""%3""=="""" goto error


REM ############################
REM #このリモートコンピュータの
REM #IDを識別できません。を回避
REM #レジストリ追加
REM ############################
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client" /v AuthenticationLevelOverride /t REG_DWORD /d 0 /f

REM ############################
REM #資格情報の設定
REM ############################
Cmdkey /generic:TERMSRV/%SERVERNAME% /user:%USERNAME% /pass:%PASSWORD%
Timeout 1

REM ############################
REM #リモートデスクトップ接続
REM ############################
Start mstsc /v:%SERVERNAME%:%PORT%
Timeout 5

REM ############################
REM #設定した資格情報を削除する
REM ############################
Cmdkey /delete:TERMSRV/%SERVERNAME%

REM ############################
REM #このリモートコンピュータの
REM #IDを識別できません。を回避
REM #レジストリ削除
REM ############################
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client" /v AuthenticationLevelOverride /f

goto end


:error
ECHO 【使い方】mstsc.bat <接続先コンピュータ名> <接続ユーザーアカウント> <接続ユーザーパスワード>
ECHO.

:end

 ※うまく動かない場合、バッチファイル内の「Timeout」コマンドのスリープ時間を調整してください。

 

 

2.コマンドプロンプトを開き、下記のコマンドを実行します。

バッチ保存先パス\mstsc.bat <接続先コンピュータ名> <接続ユーザーアカウント> <接続ユーザーパスワード>

 

  • 実行結果例
C:\Users\xxxxx>C:\Users\xxxxx\デスクトップ\mstsc.bat pcname admin adminpw
この操作を正しく終了しました。

CMDKEY: 資格情報を正しく追加しました。

0 秒待っています。続行するには何かキーを押してください ...

0 秒待っています。続行するには何かキーを押してください ...

CMDKEY: 資格情報を正しく削除しました。
この操作を正しく終了しました。
C:\Users\xxxxx>

 

 

 

【Office 365】 [PowerShell] ユーザーの削除 Power Shell まとめ

f:id:takayuki-yoshida:20190106020037j:plain

目次

 

はじめに (Office365へのPowershell接続)

Office365へのPowershell接続を行います。方法は下記のリンクを参照。

www.startpassion.life

 

削除対象ユーザーの一覧取得

次のコマンドで削除対象のアクティブユーザーの UserPrincipalName (UPN) を取得します。

Get-MsolUser -All

 コマンド実行結果(例)

PS C:\Users\xxxx> Get-MsolUser -All

UserPrincipalName DisplayName isLicensed
----------------- ----------- ----------
username@domainname TEST True

 

ユーザーの削除

次のコマンドを実行します。

<Account>は「削除対象ユーザーの取得」で取得した「UserPrincipalName」を指定します

Remove-MsolUser -UserPrincipalName <Account>

コマンド実行結果(例)

※確認は「Y」を入力します

PS C:\Users\xxxx> Remove-MsolUser -UserPrincipalName username@domainname

確認
この操作を続行しますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y

 

ユーザーの削除(確認メッセージなし)

次のコマンドを実行します。

<Account>は「削除対象ユーザーの取得」で取得した「UserPrincipalName」を指定します

Remove-MsolUser -UserPrincipalName <Account> -Force

コマンド実行結果(例)

※メッセージは表示されません

PS C:\Users\xxxx> Remove-MsolUser -UserPrincipalName username@domainname -Force
PS C:\Users\xxxx>

 

削除されたユーザーの一覧取得

ユーザー削除後30 日間の猶予期間内に復元できる削除されたユーザーの一覧を取得するには、次のコマンドを実行します。

Get-MsolUser -All -ReturnDeletedUsers

コマンド実行結果(例)

PS C:\Users\xxxx> Get-MsolUser -All -ReturnDeletedUsers

UserPrincipalName DisplayName isLicensed
----------------- ----------- ----------
username@domainname test False

 

削除済みのユーザーの削除

ユーザー削除後30 日間の猶予期間内に復元できる削除されたユーザーを削除するには、次のコマンドを実行します。

※注意:このコマンドを実行すると削除済みユーザーを復元できなくなります

Remove-MsolUser -UserPrincipalName <Account> -RemoveFromRecycleBin

コマンド実行結果(例)
※確認は「Y」を入力します

PS C:\Users\xxxx> Remove-MsolUser -UserPrincipalName username@domainname -RemoveFromRecycleBin

確認
この操作を続行しますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y
PS C:\Users\xxxx>

 

削除済みのユーザーの削除(確認メッセージなし)

ユーザー削除後30 日間の猶予期間内に復元できる削除されたユーザーを「確認メッセージなし」で削除するには、次のコマンドを実行します。

※注意:このコマンドを実行すると削除済みユーザーを復元できなくなります

Remove-MsolUser -UserPrincipalName <Account> -RemoveFromRecycleBin -Force

コマンド実行結果(例)

※メッセージは表示されません

PS C:\Users\xxxx> Remove-MsolUser -UserPrincipalName username@domainname -RemoveFromRecycleBin -Force
PS C:\Users\xxxx>

 

削除済みのユーザーの削除(UPN重複によりObectIdを指定した削除)

ユーザー削除後30 日間の猶予期間内に復元できる削除されたユーザーで、作成削除を繰り返した場合など、同じUserPrincipalNameが複数存在する場合、ObjectIDを指定して削除する必要があります。

まず、削除済みユーザーのObjectIDを取得するため、次のコマンドを実行します

Get-MsolUser -All -ReturnDeletedUsers | select UserPrincipalName,DisplayName,isLicensed,ObjectID

コマンド実行結果(例)

PS C:\Users\xxxx> Get-MsolUser -All -ReturnDeletedUsers | select UserPrincipalName,DisplayName,isLicensed,ObjectID

UserPrincipalName DisplayName IsLicensed ObjectId
----------------- ----------- ---------- --------
username@domainname test False 849cd099-1273-45a4-ba1d-34ca3f7a1ff5
username@domainname test False 848f8b66-e342-4513-a62d-7f0b24083cfa

 

次にObjectIDを指定して対象ユーザーを削除するため、次のコマンドを実行します

※注意:このコマンドを実行すると削除済みユーザーを復元できなくなります

Remove-MsolUser -ObjectId <ObjectId> -RemoveFromRecycleBin

コマンド実行結果(例)

この例ではObectId「849cd099-1273-45a4-ba1d-34ca3f7a1ff5」を削除します。

※確認は「Y」を入力します

PS C:\Users\xxxx> Remove-MsolUser -ObjectId 849cd099-1273-45a4-ba1d-34ca3f7a1ff5 -RemoveFromRecycleBin

確認
この操作を続行しますか?
[Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y
PS C:\Users\xxxx>

 

削除済みのユーザーの一括削除(確認メッセージなし)

削除済みのユーザーを確認メッセージなしで、複数を一括削除するには、次のコマンドを実行します。

※注意:このコマンドを実行すると削除済みユーザーを復元できなくなります

Get-MsolUser -All -ReturnDeletedUsers | ForEach-Object -Process{Remove-MsolUser -ObjectId $_.ObjectId -RemoveFromRecycleBin -Force}

コマンド実行結果(例)

※メッセージは表示されません

PS C:\Users\xxxx> Get-MsolUser -All -ReturnDeletedUsers | ForEach-Object -Process{Remove-MsolUser -ObjectId $_.ObjectId -RemoveFromRecycleBin -Force}
PS C:\Users\xxxx>

 

(参考)マイクロソフトページ

docs.microsoft.com

docs.microsoft.com

 

【Office 365】Office 365の管理者になったらまず読もう Office365管理者ガイド

 f:id:takayuki-yoshida:20190106020037j:plain

ドキュメント名が「Office 365 管理者トレーニング」となっていますが、

「Office 365のセットアップ手順について解説した手順書」として公開されています。

 

下記よりダウンロード可能です。(マイクロソフトページ)

Download Office 365 管理者ガイド from Official Microsoft Download Center

 

※補足

23ページの「Office365 をPower Shellで管理するには下記の準備が必要です。(本環境では設定済み)」となっている箇所は、下記リンクのページを参照してインストールしてください。

docs.microsoft.com

【システム管理】 IPアドレス管理表 テンプレート (Excel)

IPアドレス管理表のテンプレートを公開します。

 

企業のシステム管理者の方々で様々なフォーマットで作成していると思いますが、Excelで最低限な項目のみを記載した管理表を作成しました。

  • IPアドレス
  • 用途
  • 接続機器名
  • MACアドレス
  • 備考
  • 更新日
  • 更新者

f:id:takayuki-yoshida:20190104211015p:plain


IPアドレス作成のポイントを以下に記載します。

  • セグメントごとにシートを分けて作成する
  • セグメント用途は、拠点名、社内LAN、ゲスト用、音声用などを記載する
  • IPアドレス欄は、なるべくすべて順番に記載する(割り当てたものだけではなく、空きを記載する)

 

ダウンロードは下記リンクから

www.dropbox.com