by Michael Rennecke
Ich habe heute etwas länger geschlafen. Als erste Tagesaufgabe habe ich pflichtbewusst meine Mails gelesen und schon kam eine User-Mail, dass der SunRay-Server nicht läuft.
Ein Fehler war schnell gefunden: Der gdm lief nicht.
sunray ~ # svcs -a | grep gdm
disabled 11:38:23 svc:/application/gdm2-login:default
sunray ~ # svcadm enable svc:/application/gdm2-login:default
Nun konnte man sich via CDE einloggen, aber nicht mit dem Java Desktop, welcher auf gnome basiert. Nach nervigen Suchen hat sich auch Rumpel zu mir gesetzt. Dabei ist mir aufgefallen, dass in /tmp nur root schreiben darf, nachdem in /tmp wieder jeder schreiben durfte, lief wieder alles korrekt.
by Michael Rennecke
Ich wollte eben, mal schnell ein Mercurial-Repository einen Bekannten zur Verfügung stellen. Also habe ich es auf seinen Server kopiert. Nun kam die Überraschung: Es ging nicht mehr. Es gibt die typischen dubiosen Fehlermeldungen von Mercurial, bei denen niemand weiß was los ist. Da ich schon sehr lange unter Solaris mit Mercurial arbeite kenne ich so ein paar Fallstricke.
In diesem Fall war die Mercurial-Versionen verschieden. In vielen Fällen, kann man das wie folgt beheben:
# remote-Server
rennecke@odin /export/repos % hg init newrepo
# local host
rennecke@walhalla ~/repo (hg)-[default] % hg push ssh://rennecke@odin//export/repos/newrepo
Nachdem man auf dem Server ein leeren Repo angelegt hat, kann man die Inhalte rein pushen. Wenn man hinter einem Proxy-Server ist, kann man diesen gleich mit angeben:
rennecke@trantor ~ % hg --config http_proxy.host=my-proxy.org:3128 clone ssh://rennecke@odin//export/repos/newrepo
by Michael Rennecke
Ich höre immer öfter von Cloud Computing. Jedes mal hört sich das ganze wie eine ganz neue Idee an. Dabei ist Cloud Computing, nach meiner Ansicht, ein alter Hut. Dieser hat bestimmt schon 50 Jahre auf dem Buckel. Was man unter Cloud Computing versteht kann nachlesen. Was ist aber der eigentliche Kern hinter der ganzen Geschichte?
Beim Cloud Computing werden Rechen-, Speicherkapazitäten oder Dienste dynamisch zur Verfügung gestellt. Diese Kapazitäten und Dienste werden in der Regel über ein Netzwerk zugänglich gemacht. Auf den Mainframes der 1960er Jahre wurden auch Dienste und Ressourcen dynamisch angeboten und verwaltet. Die Rechenzeit wurde zum Teil auch bei den verschiedenen Kostenstellen gebucht. Auf diese Weise kann man auch aktuelle Enterprise-Server bzw. Mainframes ansetzten und dabei die Hardware dynamisch partitionieren. Wo ist nun der Unterschied, ob man 4 volle Racks hat oder nur einen großen Rechner (1960 oder heute)?
Der Unterschied zu 1960 ist, das man seit einigen Jahren vorkonfiguriertes Blech mit entsprechenden Diensten kaufen kann. Ich habe den Vorteil, das ich auf das Blech und dem Dienst Garantie bekommen kann. Weiterhin gibt es Dienstleister, welche einen Dienste anbieten. Als Kunde muss man sich nicht mehr mit der Hardware belasten. Es ist aber durchaus interessant im eigenen Rechenzentrum eine private Cloud zu betreiben. So kann man schnell auf sich änderte Bedingungen reagieren.
Wenn ich es genau nehme, dann betreibe zu Hause meine eigene Cloud. Das Herzstück ist walhalla, auf ihn läuft ein Solaris 11 Express Edition. In dem Rechner sind einige Festplatten. Wenn ich etwas ausprobiere, dann erstelle ich schnell eine Zone oder setzte mit VirtualBox ein Linux auf. Je nach dem was ich mache, erzeuge ich mir eine maßgeschneiderte Umgebung. Einige werden sich fragen, wozu der ganze Aufwand. Die Antwort ist ganz einfach: Es ist möglich und es macht mir Spaß. Den größten Mehrgewinn sehe ich darin, das ich mein System sauber halte. Denn ich weiß für was welche Zone gut ist.
P.S.: Ich habe 1960 gewählt, weil mir nichts besseres eingefallen ist.
by Michael Rennecke
Einige Bilder vom Hochwasser in Halle. Ich habe einmal etwas an der Galerie herum gepfuscht. ich hoffe es gefällt Euch. Im Zweifel einen Kommentar schreiben.
by Michael Rennecke
Ich nutze schon sehr lange den Tree Tab Style für Firefox. Heute ist mein Firefox unter Solaris alle 3 Minuten abgestürzt. Bis ich auf die Idee gekommen bin, dass es evtl. mein Tree Tab Style Plugin ist. Der Firefox hat gemeint, dass es kein Update gibt. Also habe ich auf der Projektseite des Entwickler nachgeschaut und dort gab es ein Update. Dieses funktioniert. Ob dieser Fehler nur bei Solaris auftritt weiß ich nicht.
by Michael Rennecke
Ich habe ein paar Bilder von der partiellen Sonnenfinsternis am 04.01.2011 gemacht. Der Wettergott war leider nicht ganz auf meiner Seite. Man kann die Sonne nur erahnen… Ich hoffe ihr habt trotzdem etwas Spaß an Bildern. Ich habe versucht etwas mit der Helligkeit herum zu spielen, damit die Farben besser heraus kommen.
by Michael Rennecke
Mir ist die Tage beim programmieren negativ aufgefallen, dass sich im Sun Studio 12 Express einige Funktionen anderst sind, als in der STL spezifiziert. Mir ist es bei std::sort aufgefallen. Man kann normal sort eine Funktion übergeben, welche die Elemente vergleicht. Diese Überladung existiert in der Sun STL nicht. Das ist bekannt und wurde schon an anderen Stellen diskutiert. Wenn man die STL nutzen möchte, dann muss man dem Compiler die Option -library=stlport4 mitgeben, dann wird die standartkonforme STL verwendet.
Im Sun Studio kann man diese Option unter Additional Options mit angeben.
by Michael Rennecke
Ich habe vor einigen Tagen mich mit dem Active Directory beschäftigen müssen. Für mich als Solaris-User ist das eine ganz andere Welt. Deswegen habe ich mich sehr schwer getan, ohne Martin wär dieser Artikel nicht möglich gewesen. Er stand mir mit Rat und Tat eine Stunde telefonisch zur Verfügung. Danke noch einmal!
Nun zu meinen Problem: Ich wollte Nutzer aus einer spool-Datei automatisch in das Active Directory eintragen. Weiterhin mussten die Benutzer in die Organizational Unit peter_lustig_user verschoben werden. Das anlegen der Nutzer habe ich noch alleine hinbekommen. Dazu habe ich aus zahlreichen Skripten Codezeilen kopiert. Aber das Verschieben habe ich nicht hinbekommen. Martin hat mich auf die Active Directory Tools von Microsoft hingeweisen. Diese fangen alle mit ds an. Mit dsquery * habe ich mich durch die Struktur des Active Directory gewühlt. Das grafische Frontend ist zwar schön, aber da habe ich nicht mitbekommen, aber da weiß ich nicht wie der Distinguished Name aussieht…
Zum Schluss bin ich zu folgen Skript gekommen:
Set args = WScript.Arguments
profile_pfad = "\\odin\homes\%username%\profile"
gruppe_neu = "benutzer"
if args.count <> 1 then
MsgBox "Es muss genau eine spool-Datei angegeben werden"
Wscript.quit
End If
Randomize
protokoll = "C:\Dokumente und Einstellungen\Administrator\Desktop\skripte\protokoll.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
' Das WScript.Network-Objekt liefert den Namen des Computers
Set net = CreateObject("WScript.Network")
' Protokolldatei öffnen
Set output = fs.CreateTextFile(protokoll, True)
'Holt den Namen des Computers aus dem net Objekt
name = net.ComputerName
Set computer = GetObject("WinNT://" & name)
' Datei öffnen
dateiname = args(0)
If Not fs.FileExists(dateiname) Then
MsgBox "Die Datei (" & dateiname & ") existiert am angegebenen Ort nicht!"
WScript.Quit
End If
Set infos = fs.OpenTextFile(dateiname)
' Datei zeilenweise bis zum Ende (atEndOfStream) lesen:
Do Until infos.AtEndOfStream
' eine Zeile einlesen
zeile = infos.ReadLine
' Informationen durch Semikola splitten
details = Split(zeile, ";")
username = Trim(details(0))
' Konto anlegen
Set kontoneu = computer.Create("User", Trim(details(0)))
kontoneu.FullName = Trim(details(1))
kontoneu.Profile = profile_pfad
' Passwort auslesen, wenn es das default-Passwort ist, dann generiere ein Passwort
passwort = Trim(details(2))
if passwort = "du34!$7_.4-@" then
passwort = Trim(genPasswort)
kontoneu.PasswordExpired = CLng(1)
end if
kontoneu.SetPassword passwort
' Ablaufdatum setzten
if trim(details(3)) <> "never" then
kontoneu.AccountExpirationDate = Trim(details(3))
end if
' Normales Benutzerkonto
kontoneu.UserFlags = 512
if not fs.FolderExists("\\odin\homes\" & username) then
set folder = fs.CreateFolder("\\odin\homes\" & username)
set folder_files = fs.createfolder("\\odin\homes\" & username & "\files")
set folder_profile = fs.createfolder("\\odin\homes\" & username & "\profile")
set IShellDispatch2 = CreateObject("Shell.Application")
Call IShellDispatch2.ShellExecute("C:\skripte\subinacl", "/file \\odin\homes\" & username & " /setowner=" & username, , , 0)
Call IShellDispatch2.ShellExecute("c:\skripte\subinacl", "/subdirectories \\odin\homes\" & username & " /setowner=" & username, , , 0)
Call IShellDispatch2.ShellExecute("C:\skripte\cacls", "\\odin\homes\" & username & " /T /G Administratoren:F " & username & ":F System:F < echo j", , , 0)
end if
err.clear
On Error Resume Next
kontoneu.SetInfo
if Err.number = 0 then
WriteLog "Benutzername: " & username & " Passwort: " & passwort
AddToGroup gruppe_neu, kontoneu.ADsPath
' User in die ou peter_lustig_user verschieben
set dsMove = CreateObject("Shell.Application")
dsMoveArg = " " & Chr(34) & "CN=" & username & ",CN=Users,DC=w2k8-pool,DC=windows,DC=0rpheus,DC=net" & Chr(34) & _
" -newparent " & Chr(34) & "OU=peter_lustig_user,DC=w2k8-pool,DC=windows,DC=0rpheus,DC=net" & Chr(34)
Call dsMove.ShellExecute("dsmove", dsMoveArg, , ,0)
else
if Err.number = -2147022672 then
WriteLog "Fehler beim Anlegen von " & username & ": Nutzer existiert bereits"
else
WriteLog "Fehler beim Anlegen von " & username & ": " & Err.Number
end if
end if
Err.Clear
Loop
' Dateien schließen
infos.Close
output.Close
' Protokoll anzeigen:
'SYS: Microsoft (r) Script Runtime
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run """" & protokoll & """"
Sub AddToGroup(gruppenname, kontoname)
On Error Resume Next
Set gruppe = GetObject("WinNT://" & ComputerName & "/" & gruppenname & ",group")
gruppe.Add kontoname
gruppe.SetInfo
If Err.number = 0 Then
'WriteLog "Konto ist Mitglied in Gruppe " & gruppenname
Else
'WriteLog "Konto konnte nicht zum Mitglied in Gruppe " & gruppenname & " gemacht werden."
End If
Err.Clear
End Sub
Sub WriteLog(text)
' eine Zeile ins Protokoll schreiben und Leerzeile einfügen
output.WriteLine text & vbCrLf & vbCrLf
End Sub
function genPasswort()
password = ""
for i=1 to 12
if Int(100*Rnd mod 2 ) = 1 then
password = password & chr(Int(61*Rnd+33))
else
password = password & chr(Int(29*Rnd+97))
end if
next
genPasswort = password
end function
Der AD-Guru oder Windows-Hardcore User wird sicher sagen, wie dumm ist das denn, das geht in einen 3-Zeiler. Aber ich kann kein Windows und will es eigentlich auch nicht lernen
Wenn ich Zeit hätte wüsste ich wie man mit den ds*-Tools das ganze schöner machen könnte. Ich habe das komplette Skript hier rein gestellt, da man sicher die ein oder andere Zeile klauen kann *g*. Der Passwortgenerator ist schlecht, es war aber die schnellste Lösung.
by Michael Rennecke
Mir sind heute meine Festplatten fast voll gelaufen. Also habe ich quick&dirty die Kompression und die Deduplikation von zfs für die betreffenden Dateisysteme aktiviert. Da zfs (noch) kein rewrite der Daten hat, habe ich angefangen die Daten zu kopieren und anschließend die alte Version gelöscht. Für import und Export von Pool hatte ich einfach zu wenig Platz, deswegen die umständliche Aktion mit dem kopieren. Und dann kam der Schreck: du -hs zeigte auf einmal eine kleinere Größe an. Nach einiger Nachforschung habe ich mitbekommen, dass disk usage wörtlich zu nehmen ist. du zeigt wirklich die Größe an, welche auf dem Device verbraucht wird. Das GNU-du kann hier Abhilfe schaffen, mit /usr/gnu/bin/du --apparent-size -hs bekommt man die Aufsummierte Größe der Dateien. In diesem Zusammenhang ist der Blogeintrag von Ben Rockwood lesenswert.
Zum Schluss sei noch gesagt, dass sich die Aktion für meine Daten gelohnt hat. Ich habe zfs compression=on .... gesetzt, also keine gzip-Kompression benutzt.
by Michael Rennecke
Ich habe es endlich geschafft: ein Update auf OpenIndiana Im großen und ganzen kann man es einigermaßen benutzen. Die Lokalisierung ist mehr als schlecht. Das meiste kann man irgendwie fixen
Update auf OpenIndiana
Man findet hier auch die orginale Anleitung zum Update.
- update auf Build 134 bzw. Build 134 booten (wie man bootet zeige ich nicht
)
rennecke@walhalla ~ % pfexec pkg install SUNWipkg SUNWipkg-um SUNWipkg-gui
rennecke@walhalla ~ % pfexec pkg set-publisher -O http://pkg.openindiana.org/legacy opensolaris.org
rennecke@walhalla ~ % pfexec pkg image-update
- Update auf OpenIndiana
rennecke@walhalla ~ % pfexec pkg set-publisher --non-sticky opensolaris.org
rennecke@walhalla ~ % pfexec pkg set-publisher -p http://pkg.openindiana.org/dev
rennecke@walhalla ~ % pfexec pkg set-publisher -P openindiana.org
rennecke@walhalla ~ % pfexec pkg uninstall entire
rennecke@walhalla ~ % pfexec pkg uninstall thunderbird # das Paket konnte ich nicht updaten
rennecke@walhalla ~ % pfexec pkg uninstall songbird # das Paket konnte ich nicht updaten
rennecke@walhalla ~ % pfexec pkg image-update
Troubleshooting
Tags:
enigmail,
hack,
Illumos,
OpenIndiana,
OpenSolaris,
pkg,
problem,
Tastatur,
thunderbird,
update,
upgrade Posted in
Solaris |