ラベル command の投稿を表示しています。 すべての投稿を表示
ラベル command の投稿を表示しています。 すべての投稿を表示

2010年1月30日土曜日

Windowsのネットワーク接続をバッチファイルやコマンドプロンプトから制御する

現在ネットワーク接続中の接続先を一覧表示する

net use


接続を解除する
net use /d <リモート名>
<リモート名>は net use で一覧を表示した時に「リモート名」のところに表示されるパス。



ユーザー名とパスワードを指定して接続する
net use <リモート名> <パスワード> /user:<ユーザー名>
パスワードが平文で見えてしまうのが気持ちが悪いが。何かよい方法あるのかな?

Sambaセットアップの参考サイト

Sambaセットアップ時の参考サイトのメモ。


Sambaのセットアップ
 参考:Sambaをインストールして、みんなでファイルを共有できるようにする。
補足
  • 自分の場合、WORKGROUPがWorkgroupとInitCapになっていて、全部大文字だとダメだった。
  • passdb backendは tdbsam のままでOKだった。


SELinuxを有効にしている場合、Windowsからログインしようとすると「ネットワーク名が見つかりません。」というエラーになるのでsetseboolコマンドを使う。
 参考:[unix][soft][windows] Sambaをインストールした - メモの日々(2009-03-05)


Windows側からファイルを作成した際のデフォルトのパーミッションの設定
 参考:チョレオ - Sambaでファイル共有のパーミッションではまる話


Windowsから他のユーザーでアクセスしたくなったら、コマンドプロンプトからネットワークログイン情報を削除する。
 参考:Tips Labo Windows:ネットワークのログイン情報を削除する方法


もうちょっと詳しい情報
 共有フォルダの作成と詳細設定

2009年2月11日水曜日

バッチ処理でWindowsのサービスを再起動する(応用編)

バッチファイルでWindowsのサービスを再起動する方法を使えば、タスクに登録したスケジュールで定期的にWindowsのサービスを再起動できる。
でも、Apacheなんかはたまに停止時にゴミプロセスが残っていたりして、直後の起動に失敗することがある。

そこで、起動を何度かリトライするようにしてみる。

@ECHO OFF

SET service_name=apache2

NET STOP %service_name%

SET max_count=3
SET loop_count=0

:service_start
 NET START %service_name%

 REM STARTできたら終わり
 IF %errorLevel% == 0 GOTO service_restart_end

 ECHO start失敗 (error level %errorLevel%)
 SET /A loop_count=%loop_count% + 1
IF NOT %loop_count% == %max_count% GOTO service_start

:service_restart_end

for文では変数の遅延展開がある(参考floatingdays: コマンドプロンプトで繰り返し処理)のに注意。(なのでGOTOを使ったループにした。)
また、GOTOを使ったループでは、間違えて永久ループにしないようにも注意。


関連記事:
 floatingdays: バッチファイルでWindowsのサービスを再起動する方法
 floatingdays: コマンドプロンプトで繰り返し処理


参考:
 コマンドプロンプトを使ってみよう! -バッチファイル-
 コマンドプロンプトで実行ファイルの戻り値を取得する:システム開発メモ:So-net blog

2008年8月28日木曜日

MySQLをオンラインでバックアップ

MySQL5.0以降の話。(MySQL 4.1 リファレンスマニュアルには記述が無いが、MySQL 5.0 Reference Manualには記述があるので。)

InnoDBではテーブルのロック("--lock-all-tables" 省略形は-x)をせずにmysqldumpでオンラインバックアップができるらしい。
参考:MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 7.12 mysqldump — データベースバックアッププログラム(ページの一番下の方)


使用例

mysqldump -u USER_NAME -pPASSOWRD -A --single-transaction > /path/to/backup/dir/mysqldump.sql

"-p"とパスワードの間にはスペースを入れない。
"-A"は"--all-databases"の省略形。
"--single-transaction"はテーブルのREAD ONLYなロック?アプリケーションをブロックしないで済むようだ。 InnoDBのみ有効。
--single-transaction
このオプションはサーバからデータをダンプする前にBEGIN SQLステートメントを発行します。InnoDBといったトランザクションテーブルに対してのみ便利です。なぜなら、アプリケーションをブロックせずに、BEGINが発行された当時のデータベースの状態をダンプするからです。
このオプションを使用しているときは、一定の状態でダンプされるのはInnoDBテーブルのみだということを留意してください。例えば、このオプションを使用中にダンプされたMyISAMやMEMORYテーブルは状態が変化する可能性があります。

mysqldumpの出力はSQL。データベース・テーブル等のCREATE文やデータのINSERT文等が書いてある。
そのままSQLを実行すればリストアできる(はず)。

mysqldumpを使ったバックアップ・リストアは、データ量が多い場合には時間がかかるらしいので注意。

2008年1月27日日曜日

Windowsのコマンドプロンプトの文字コードを変える方法

Windowsのコマンドプロンプトでエラーメッセージ等が文字化けすることの原因は文字コードの設定。
コマンドプロンプトのデフォルトの文字コードはShift_JISになっている。
ApacheやSubversionなどUTF-8で出力するアプリをコマンドプロンプトから使うと、メッセージが文字化けすることがある。

下記のようにすれば文字コード設定を変えられる。

chcp 65001

"65001"はUTF-8のコードページ。Shift_JISの場合は"932"。
他の文字コードについては下記リンクのリンク先から調べられる。


参考: UTF-8とコマンドプロンプトとMySQLモニタ | Sarabande

2008/07/08追記:コマンドプロンプトでUTF-8の文字を表示する。 - サンプルコードによる Perl 入門ではフォントの変更についても触れているので参考になるかも。

2007年11月21日水曜日

コマンドプロンプトで文字列を置換する

(2009/06/13 追記: コメント欄に、とても簡単に置換する方法を教えてもらったので、まずそちらを参考にすることをお薦めします。)


Widnowsのコマンドプロンプトで文字列の置換をする方法。
コマンドとしては提供されていないので、for文を利用する。

例えばシステム日付(例:2007/11/21)のスラッシュをハイフンにする場合。

@echo off
rem 変換したい文字列をセット

set before=%date%
rem 置換する文字をセット
set search=/
rem 置換後の文字をセット
set replace=-

rem 変数初期化
set after=
set replace_wk=

:loop
if "%before%" == "" goto :end
for /f "tokens=1* delims=%search%" %%A in ("%before%") do (
  set after=%after%%replace_wk%%%A
  set before=%%B
  set replace_wk=%replace%
)
goto :loop

:end
rem 変換結果の確認
echo %after%


対象文字列が日付だけなら、もっとシンプルにできる。
for /f "tokens=1-3 delims=/" %%A in ("%date%") do set today=%%A-%%B-%%C
echo %today%


()の中で変数を使う場合、遅延展開が絡んでくるので注意。(参考:setコマンドの遅延展開について (DOSプロンプト活用相談室LOG)


参考: コマンドプロンプトを使ってみよう! -バッチファイル-

ブログ アーカイブ

tags